Mambo Muhimu kwa Kutumia Vibonyeo Checkbox katika PHP
Acha tuwe na bonyeo moja tu kwenye fomu yetu:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Acha msimbo wa kushughulikia fomu yetu uonekane hivi:
<?php
if (!empty($_GET)) { // ikiwa fomu ilitumwa
if (isset($_GET['flag'])) { // ikiwa bonyeo limewekwa alama
echo 'limewekwa alama';
} else {
echo 'halijawekwa alama';
}
}
?>
Tutakabiliwa na tatizo - ikiwa bonyeo halijawekwa alama,
basi, kwa kuwa kwenye fomu hakuna vipengele vingine
isipokuwa bonyeo, kwenye $_GET kutakuwa na safu
tupu. Hii inamaanisha kuwa kwenye msimbo wa kushughulikia
fomu hatutaingia kwenye if ya kwanza, inayokagua
kutumwa kwa fomu.
Kutatua tatizo hili, hutumia njia maalum: huunda kipingamizi kisichoonekana (hidden input) chenye jina sawa na la bonyeo letu. Wakati huo huo, thamani ya kipingamizi kisichoonekana huweka sifuri, na bonyeo - kuweka moja:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
Katika hali kama hii, yatakayotokea ni yafuatayo. Ikiwa bonyeo halijawekwa alama, basi kwenye seva itapelekwa thamani ya kipingamizi kisichoonekana pekee. Ikiwa bonyeo limewekwa alama, basi kwenye seva zitatumwa thamani zote mbili zikiwa na jina moja. Lakini, kwa kuwa thamani ya bonyeo itakuwa ya pili, basi itafuta tu ya kwanza.
Kwa hivyo, sasa bonyeo letu litatumwa kwenye seva ama sifuri, ama moja:
<?php
var_dump($_GET['flag']); // '0' au '1'
?>
Tutumie hii kwenye ukaguzi wetu:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'limewekwa alama';
} else {
echo 'halijawekwa alama';
}
}
?>
Kwa kutumia bonyeo, muulize mtumiaji,
kama amefikisha umri wa miaka 18 au la. Ikiwa
amefikisha, mruhusu kuingia kwenye tovuti, na ikiwa
hajafikisha - usimruhusu.