Zachowywanie wybranej wartości w checkboxie po wysłaniu w PHP
Zróbmy teraz tak, aby wartość
checkboxa była zachowywana po wysłaniu. W
tym celu sprawdzimy, że $_GET['flag']
istnieje (czyli nastąpiło wysłanie formularza)
i jest równe jeden (czyli pole wyboru jest zaznaczone).
Jeśli te dwa warunki są spełnione, to wypiszemy
w checkboxie atrybut checked:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input
type="checkbox"
name="flag" <?php
if (isset($_GET['flag']) and $_GET['flag'] === '1')
echo 'checked';
?>
>
<input type="submit">
</form>
Sprawdzanie można uprościć, jeśli dokładnie wiemy,
że ukryty input przekazuje 0. W takim
przypadku, jeśli checkbox nie jest zaznaczony, to w $_GET['flag']
będzie leżeć '0', a jeśli wysyłanie
formularza jeszcze nie nastąpiło, to będzie leżeć null.
W obu tych przypadkach nie powinniśmy wypisywać
checked. I oba te przypadki możemy
wyłapać funkcją empty. W ten sposób
możemy sprawdzić, że $_GET['flag']
nie jest pusty, i tylko w tym przypadku wypisać checked:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input
type="checkbox"
name="flag"
value="1"
<?php if (!empty($_GET['flag'])) echo 'checked' ?>
>
<input type="submit">
</form>
Zrób trzy checkboxy, które będą zachowywać swoją wartość po wysłaniu.