⊗ppPmFmChcN 307 of 447 menu

Nuansy použitia checkboxov v PHP

Nech v našom formulári je iba checkbox:

<form action="" method="GET"> <input type="checkbox" name="flag"> <input type="submit"> </form>

Nech kód spracovania nášho formulára vyzerá takto:

<?php if (!empty($_GET)) { // ak bol formulár odoslaný if (isset($_GET['flag'])) { // ak je checkbox zaškrtnutý echo 'zaškrtnutý'; } else { echo 'nezaškrtnutý'; } } ?>

Čaká nás problém - ak checkbox nie je zaškrtnutý, tak, keďže vo formulári okrem checkboxu nie sú žiadne ďalšie prvky, v $_GET bude prázdne pole. To znamená, že v kóde na spracovanie formulára sa nedostaneme do prvého if, ktorý kontroluje odoslanie formulára.

Na vyriešenie problému sa používa špeciálna pomôcka: vytvorí sa skrytý input s rovnakým menom, ako má náš checkbox. Pričom hodnotou skrytého inputu nastavia nulu a checkboxu - jednotku:

<form action="" method="GET"> <input type="hidden" name="flag" value="0"> <input type="checkbox" name="flag" value="1"> <input type="submit"> </form>

V takom prípade nastane nasledovné. Ak checkbox nie je zaškrtnutý, na server sa odošle iba hodnota skrytého inputu. Ak je checkbox zaškrtnutý, na server sa odošlú obe hodnoty s jedným menom. Ale, keďže hodnota checkboxu bude druhá, tak jednoducho prepíše prvú.

Takže, teraz náš checkbox bude odosielať na server buď nulu, alebo jednotku:

<?php var_dump($_GET['flag']); // '0' alebo '1' ?>

Využime to v našej kontrole:

<?php if (!empty($_GET)) { if ($_GET['flag'] === '1') { echo 'zaškrtnutý'; } else { echo 'nezaškrtnutý'; } } ?>

Pomocou checkboxu sa spýtajte používateľa, či má už 18 rokov alebo nie. Ak áno, umožnite mu prístup na stránku, a ak nie - neumožnite.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť