⊗ppPmFmChcN 307 of 447 menu

Nuance používání zaškrtávacích polí v PHP

Nechť je v našem formuláři pouze zaškrtávací políčko:

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

Nechť kód zpracování našeho formuláře vypadá takto:

<?php if (!empty($_GET)) { // pokud byl formulář odeslán if (isset($_GET['flag'])) { // pokud je zaškrtávací políčko zaškrtnuto echo 'zaškrtnuto'; } else { echo 'nezaškrtnuto'; } } ?>

Čeká nás problém - pokud zaškrtávací políčko není zaškrtnuto, tak, protože ve formuláři kromě zaškrtávacího políčka nejsou žádné další prvky, bude v $_GET ležet prázdné pole. To znamená, že v kódu pro zpracování formuláře se nedostaneme do prvního if, který kontroluje odeslání formuláře.

Pro řešení problému se používá speciální trik: vytvoří se skrytý input se stejným názvem, jako má naše zaškrtávací políčko. Přitom hodnotou skrytého inputu nastaví nulu a zaškrtávacího políčka - jedničku:

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

V takovém případě nastane následující. Pokud zaškrtávací políčko není zaškrtnuto, na server se odešle pouze hodnota skrytého inputu. Pokud je zaškrtávací políčko zaškrtnuto, na server se odešlou obě hodnoty se stejným názvem. Ale protože hodnota zaškrtávacího políčka bude druhá, tak jednoduše přepíše tu první.

Takže nyní naše zaškrtávací políčko bude odesílat na server buď nulu, nebo jedničku:

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

Použijeme to v naší kontrole:

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

Pomocí zaškrtávacího políčka se zeptejte uživatele, zda je mu již 18 let nebo ne. Pokud ano, povolte mu přístup na web, a pokud ne - nepovolte.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout