PHP ile checkbox kullanımı
Daha önce şu yazıda HTML’de checkbox ve radio button kullanımı örneğini göstermiştim. Fakat checkbox’un HTML ve PHP ile kullanımı normal form elemanlarından biraz farklı.
Checkbox olayını iki farklı şekilde kullanabiliriz, birincisi sıkca gördüğümüz tek bir checkbox ile şartları kabul etme, onay alma mevzusu. Diğeri ise listelerde birden fazla maddeyi seçip çoklu işlem yaptırma.
Checkbox ile onay işlemi
Genellikle formların sonlarında şartları kabul edilmesinde kullanılan tek bir checkbox hazırlamanın çok fazla bir espirisi yok. Bir checkbox ekliyoruz ve PHP kısmında yanlızca elemana verdiğimiz adın gönderilip gönderilmediğine bakarak seçilip seçilmediğini anlıyoruz.
form.php:
<form action="kontrol.php" method="post"> <label><input type="checkbox" name="onay"/> Onaylıyorum</label> <input type="submit" value="Tamam"> </form>
Önizleme:
Checkbox elemanını başlığı ile label arasına alarak “Onaylıyorum“a tıklandığında da checkboxu tetiklemesini sağlıyoruz.
kontrol.php:
if(isset($_POST['onay'])) { // checkbox seçilmişse "on" değeri gönderiliyor echo 'Onayladınız!'; } else { // seçilmemişse bu değer sayfaya hiç gönderilmiyor echo 'Onaylamadınız.'; }
Bu tür kullanımda checkboxa value yani değer tanımlamamıza gerek yok, çünkü sadece isset fonksiyonu ile seçilip seçilmediğini kontrol etmemiz yeterli. Eğer seçilmezse sayfaya checkboxun adında bir değer gitmiyor, eğer seçilirse de “on” değeri gönderiliyor.
Checkbox ile çoklu seçim ve işlem uygulama
Listelerde birden fazla maddeyi checkbox ile seçip toplu işlemler yapmak için bir array mantığı uygulayacağız.
form.php:
<form action="kontrol.php" method="post"> <label><input type="checkbox" name="meyveler[]" value="elma"/> Elma</label><br/> <label><input type="checkbox" name="meyveler[]" value="armut"/> Armut</label><br/> <label><input type="checkbox" name="meyveler[]" value="cilek"/> Çilek</label><br/> <label><input type="checkbox" name="meyveler[]" value="muz"/> Muz</label><br/> <input type="submit" value="Tamam"> </form>
kontrol.php:
if(isset($_POST['meyveler'])) { $meyveler = $_POST['meyveler']; echo 'Seçtiğiniz meyveler: <br/>'; foreach($meyveler as $meyve) { echo ' * ' . $meyve . ' <br/>'; } } else { echo 'Hiç meyve seçmediniz.'; }
Checkboxların her birinin name yani isim değerine “meyveler[]” dedik, buradan bu olayın array mantığıyla işlediğini daha iyi anlayabilirsiniz. Böylelikle her seçilen madde “meyveler” değerine bir array elemanı olarak ekleniyor. PHP tarafına ise bu POST değişkeni array olarak gönderiliyor.
Daha iyi anlamak için kontrol.php en başına print_r($_POST) yazarak gelen sonucu net şekilde görebilirsiniz:
Array ( [meyveler] => Array ( [0] => elma [1] => cilek [2] => muz ) )
Çoklu seçilen maddeleri toplu silme uygulama
Yukarıdaki örnekte nasıl çoklu seçenek yapılacağını ve PHP’de nasıl karşılandığını örnek gösterdim. Bu yönteme bir de toptan içerik silme örneği gösterebilirim.
Bunun için ekranda veritabanından listelenmiş içerik örnekleri olduğunu varsayalım.
form.php
<form action="kontrol.php" method="post"> <label><input type="checkbox" name="sil[]" value="1"/> Birinci yazının başlığı</label><br/> <label><input type="checkbox" name="sil[]" value="2"/> Bir diğer yazı başlığı</label><br/> <label><input type="checkbox" name="sil[]" value="3"/> Başka yazı</label><br/> <label><input type="checkbox" name="sil[]" value="4"/> Sonuncu yazı</label><br/> <input type="submit" value="Seçilileri sil"> </form>
Bu sefer checkboxlara “sil[]” ismini tanımladık ve değerlerine her yazının NO’sunu yazdık. Şimdi bu form ile birden fazla yazı seçildiğinde kontrol.php sayfasına silinecek yazılarının NO’sunu içeren “sil” adında bir array gönderilmiş olucak.
kontrol.php:
if(isset($_POST['sil'])) { $silinecekler = implode(', ', $_POST['sil']); mysql_query('DELETE FROM yazilar WHERE NO IN ( ' . $silinecekler . ' )'); echo count($_POST['sil']) . ' adet yazı silindi.'; }
Bu sefer gelen arrayı implode ile birleştirdik, yani eğer 1. ve 4. yazıyı seçip formu gönderirsem $silinecekler değişkeni “1, 4” şeklinde bir değer almış olacak. Sonuç olarakta içerikleri silecek MySQL sorgumuz ise şöyle olacak “DELETE FROM yazilar WHERE NO IN ( 1, 4 )” ve bu iki seçilmiş yazıyı silmiş olacağız.
Bir sonraki PHP serüveninde görüşmek üzere!
Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.
Hocam ellerinize sağlık çok açıklayıcı olmuş uzun zaman oldu ihtiyacım oldu, araştırdım hatırlattığınız için teşekkür ederim.
peki db den gelen checkboxları nasıl yazdırırız
Database Musa Hoca Anlatımı Hayır Anlatmadığı İçin Birşey Yapma Database Yani Mysql Öğren Ondan Sonra Tek Başına Bile Yaparsın Kardeş.
sa kolay gelsin ben bir emlak sitesi yapmaya çalışıyorum checkboxlarla seçtiğim verileri kaydedebiliyorum hatta çekip yazdırıyorum lakin yazdırdığım checkboxların güncellemesini yapamıyorum yardım edebilir misiniz
no in nedir acaba?
yada not in olmasın?
Merhaba;
Checkbox’u seçili halde nasıl getirebiliriz ? Yani index.php de seçili olarak gelsin. Dilenirse seçimi kaldırayım ben…
checked=true
parametresini ekleyerek checkboxu seçili yapabilirsiniz.Submit butonuna tıklanınca nereye gideleceği nasıl ayarlanır çoook acil!
<form action="post_edilecek.php"
şeklinde action bölümünde belirtiyoruz.
checkboxı nasıl eklicez :S ben sadece verdiginiz kodları yazıyorum hata veriyo . yardım edermisiniz
Meraba
Benim liste adında bi tablom var(phpmyadmin sayfamda) ben bu tablodan erkek kadın diye iki radio button yaptım ve secime göre listlettim ama ben istiyorum ki listelettiğim örngin kadınları listelettim bu listedekiler checkboxlı gelsin ve checkboxtan bidaha secimle filtleyebiliyim
yardımcı olursanız sevinirim şimdiden teşekürler.
<?php
$baglanti = @mysql_connect('localhost', 'root', '');
$veritabani = @mysql_select_db('deneme');
if($baglanti && $veritabani) {
echo '';
} else {
echo '';
}
$sorgu= mysql_query("Select * from liste where Cinsiyet='K'") or die ("calistirilamadi");
echo "”;
while($veri=mysql_fetch_array($sorgu)) {
echo $veri[‘ID’].’ ’;
{
echo $veri[‘Name’].’ ’;
{
echo $veri[‘Soyad’].””;
}
}
}
?>
işte böle bi sorgum var ama ben bu sorguda ekrana yazdırılacakları checkbox’ın yanında yazdırsın istiyorum
Lütfen yardımcı olursanız sevinirim.
Merhaba gerçtekten anlatımlarnız cok başarılı tesekkurler
Merhabalar,seçmiş oldugumuz checkboxları submit gibi bir butona bastıktan sonra gelen sayfada seçili vaziyette nasıl gösterebiliriz ?Teşekkürler.
seçili olmasını istediğin checkboxa “checked” parametresi eklemen yeterli, örnek;
Anlatımınız çok güzel. Emeğinize ve yüreğinize sağlık.
Ayrıntılı anlatımınız çok güzel. Teşekkürler.
Hocam Yaptığınız Kodlamada No Yerine Not Olmuyacakmı ..
Saygılarımla Hocam
Bu örnekte NO olarak geçen silineceklerin nosu oluyor, yani ID olarak da düşünebilirsiniz fakat ben NO demişim. SQL’e bakıldığında sanki NOT IN yazılacakmış gibi gözüküyor ama şöyle bakarsanız daha iyi anlarsınız;
DELETE FROM `yazilar` WHERE `NO` IN ( 1, 4 )
Sağolun Hocam İyi Sizin Gibi Bir Hocaylan Tanışmışım.
Merhaba, anlatım çok ama çok iyi. çok işimi görecek yanlız bir noktada tıkandım açıkçası.
Yapmış olduğum tablo http://resim.rehacan.com/?v=asd.png adresinde mevcut.
yapmak istediğim de az çok anlaşılmıştır. 🙂
soldaki checkbox lar secim[] name i ile value değerlerine de sorunun sıra numarası verilecek şekilde gelmekte. zorlandığım nokta ise, form action kısmına silme butonunda ayrı, düzeltme butonunda ayrı yönlendirme nasıl yapabilirim?
yani seçililerin hangisi olduğunu görecek, düzelte bastıysam duzelt.php?id=* şeklinde, sil dediysem sil.php ye yönlenecek.
yardımcı olursanız sevinirim.
hocam yeni yaptığım siteme checkbox ekledim yalnız coklu checkboxlarda sorun yaşıyorum örneğin kişi birden fazla dil biliyorsa ingilizce türkçe almanca ozaman bunu veritabanına nasıl set edecem ve güncelle dediğimde değerlerin boş gelmemesi için ne yapcam checkboxların name bölümü aynımı olacak veritabanında aynı sütün için birden fazla checkbox ekleyebilirmiyim lütfen yardım edn bu sorunun cevabı acil lazım ?
benim performans ödevim vardıda.ondada 4 adet textbox 4 adet checkbox olucak. sırasıyla hangi checkbox a tıklarsak o textbox aktif olucak diğerleri pasif kalıcak. bunu nasıl yapabilirim yardım edebilecek olan varmı ?
iyi günler ben amatör olarak php ile ilgilniyorum ve checkbox ile ilgili bir problemim var yardımcı olursanız sevinirim kolay gelsin.
<input type="hidden" name="cid[]" value="”>
<tr class="”>
<input name="urunadi[]" type="text" value="” size=”40″>
<input name="admin[]" type="text" value="” size=”20″>
<input type="checkbox" name="delete[]" value="”>
burada bir satırdaki checkbox ı seçtiğimde verileri post ettiriyorum yanlız id yi sayfada alıyorum ama urunadı malesef gelmiyor.
if (count($_POST[‘delete’])>0) {
echo $delete[0];
echo $urunadi[0];
exit();
Hocam elleriize sağlık. Aramalarda sitenize denk geliyorum ve bukadar öğretinize rağmen bir teşekkür etmeden gitmek terbiyesizlik oludu (: Teşekkürler.
Merhabalar. Hocam üstteki mesajda kodlar görünmediği için textarea ile yazıyorum mesajı. WordPress portalım için nöbetçi eczane botu yazıyorum. PHP bilgim çok az. Örneklerle vs bi düzene soktum. Ancak tam olarak istediğimi yapamıyorum. Şu anki hali ile bot, mysql tablosuna veri yazdırmaya ve veri çekmeye yarıyor. Ben bu işleve ek olarak, botun yönetim panelinde checkbox ile işaretleyeceğim eczaneleri sidebar içinde bir sayfaya çekmek istiyorum. Yardımcı olur musunuz? Kodlar şu şekilde:
Eczane Adı:
Eczane Telefonu:
Eczane Adresi:
Nöbetçi Eczane Ekle
Seç
Eczane Adı
Eczane Telefonu
Eczane Adresi
Kaldır
<input type="checkbox" name="listeguncelle[]" value="” />
<a href="./?i=sil&id=”>
Çok basit bir konuda çözümünü bulamadığım bir sorun yaşıyorum.
Başlangıçta html 5 ile yazdığım bir dosyayı farklı kaydedip .php hâline getirdiğimde “Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0” uyarısı alıyorum. Dosyanın bulunduğu klasörü bile F5’le yeniliyorum, ona rağmen aynı hata uyarısını veriyor. Nedir bu sorunun kaynağı? .php dosyasını html’le biçimlendirememek pek mantıklı gelmedi. xampp kullanıyorum ve mysql de açık durumda.
Sorunu anladım galiba; ulaşmak istediğim .php dosyası adında Türkçe karakter geçen bir klasörün içinde bulunduğundan böyle sorun çıkarıyor. PHP’nin Türkçe’yle olan bu sorununa herhangi bir çözüm bulabilir miyiz?
Türkçe karakterli klasör isimleri kullanmamanı öneririm. Eğer özellikle Türkçe karakter içermek zorunda ise windows yerine linux bir sunucuda çalışıp çalışmadığını dene, bu sorun windows ile de alakalı olabilir.
Güzel anlatım emeğine sağlık.
Merhabalar hocam,
Yalnız bir sorun bulunuyor. MSSQL de Where IN (2,3,4) gibi bir method kullanılmıyor ne öneriyorsunuz.
MySQL’e geçmeni öneriyorum 🙂 İmkansızsa WHERE id = 1 OR id = 2 … şeklinde kullanabilirsin.
Hocam bir sorgu ile örnek gösterebilir misiniz ?
$silinecekler = implode(‘, ‘, $_POST[‘sil’]);
, yerine or koymam yeterli olmuyor çünkü tek hücrede algılıyor ‘ ‘ içindeymiş gibi sorgu örneğiniz var mı hiç eliniz de ?
sayfa değiştirdiğimde checkbox işaretinin kaybolmaması için ne yapabilirim?
checkbox input’u içerisine checked yazarak onu seçili gösterebilirsin. Örnek; https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_input_checked
Cok guzel olmus. tesekkurler