Php checkbox kullanımı

Php ile checkbox kullanımı çoğunlukla kullanıcıların karşısına üye giriş formlarında 'Beni Hatırla' olarak çıkmaktadır. Bunun yanında örnek vermek gerekirse bir formda kullanıcının aynı anda bir veya birden fazla checkbox kullanımı mevcuttur.

İlk olarak bir form ve içerisine checkbox oluşturalım.

<form method="post">
    <label><input type="checkbox" name="status" value="aktif">Tıkla Bana</label>
    <button name="dene">Dene !</button>
</form>

Yukarıdaki formda status adında bir checkbox oluşturduk ve değerini aktif olarak belirledik bu değeri sizler daha geliştirerek veri tabanından da çekebilirsiniz. Şimdi ise bu checkbox a tıklanında ekrana değerini yazdıralım.

if (isset($_POST['dene'])) {
    echo isset($_POST['status']) ? 'Aktif' : 'Pasif' ;
}

Yukarıdaki örnekde form içerisindeki butona submit edildiğinde kısa if ile eğer checkbox, checked edilmişse ekrana Aktif değilse Pasif yazacaktır. 

Örneği biraz daha geliştirerek Beni Hatırla uygulaması yapalım. Tekrar bir form oluşturalım ve kullanıcı Beni Hatırla dediği zaman tarayıcı kapanana kadar kullanıcıyı hatırlasın.

<form method="post">
    <label><input type="checkbox" name="rememberme" <?=$_COOKIE['rememberMe'] ? 'checked' : '' ?> > Beni Hatırla</label>
    <button name="login">Giriş</button>
</form>

<?php 
if (isset($_POST['login'])) {
    if (isset($_POST['rememberme'])) {
        setcookie("rememberMe", true);
    }else{
        setcookie("rememberMe", false);
    }
}
?>

Yukarıdaki örnekte kullanıcı beni hatırla dediği zaman, tarayıcı kapanana kadar duracak bir cookie oluşturuyoruz ve beni hatırla derse çerez içeriğimiz true olacaktır. Ve sonrasında input içersinde yazdığımız kısa if ile cookie eğer true ise kullanıcı beni hatırla demiştir diyoruz ve değeri checked yapıyoruz eğer beni hatırla dememişse birşey yapmasına gerek yok.

Peki aynı anda birden fazla checkbox kullanmak istersek ? Bu seferde checkbox ımızın name ini sanki bir array, diziymiş gibi gösteriyoruz. Biz böyle gösterince kullanıcı formu submit ettiğinde php yorumlanırken diyorki 'aaaa bunda birden fazla seçenek olabilir' ve verileri sanki bir diziymiş gibi alıyor.

<form method="post">
    <label><input type="checkbox" name="pc[]" value="monitor"> Monitör</label>
    <label><input type="checkbox" name="pc[]" value="kasa"> Kasa</label>
    <label><input type="checkbox" name="pc[]" value="klavye"> Klavye</label>
    <label><input type="checkbox" name="pc[]" value="mouse"> Mouse</label>
    <button name="topla">Bilgisayarı Topla</button>
</form>

<?php 

if (isset($_POST['topla'])) {
    echo print_r($_POST['pc']);
}

?>

Yukarıda oluşturduğumuz örnekte 4 adet checkbox ımız vardır ve bunların hepsine name olarak

pc[]
olarak belirledik. Kullanıcı formu submit ettiğinde veriyi almak için artık
pc[]
dizisinden veri almaktayız. Bunu en kolay
print_r()
fonksiyonu ile görebiliriz.

if (isset($_POST['topla'])) {
    foreach ($_POST['pc'] as $key ) {
        echo $key . "<br>";
    }
}

pc dizimizin içerisindeki checked edilmiş tüm elemanları alt alta yazdırmak için ise foreach döngüsünü kullanabiliriz.