⊗ppPmFmChcN 307 of 447 menu

Čekboksų naudojimo niuansai PHP

Tarkime, mūsų formoje yra tik čekboksas:

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

Tarkime, mūsų formos apdorojimo kodas atrodo taip:

<?php if (!empty($_GET)) { // jei forma buvo išsiųsta if (isset($_GET['flag'])) { // jei varnelė pažymėta echo 'pažymėta'; } else { echo 'nepažymėta'; } } ?>

Mus laukia problema - jei varnelė nepažymėta, tai, kadangi formoje, išskyrus čekboksą, nėra kitų elementų, $_GET bus tuščias masyvas. Tai reiškia, kad formos apdorojimo kode mes nepateksime į pirmąjį if, tikrinantį formos išsiuntimą.

Problemai išspręsti naudojamas specialus priėmimas: sukuriamas paslėptas įvesties laukas su tokiu pačiu pavadinimu, kaip ir mūsų čekboksas. Tuo pačiu paslėpto įvesties lauko reikšmė nustatoma į nulį, o čekboksas - į vienetą:

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

Tokiu atveju bus taip. Jei čekboksas nepažymėtas, į serverį bus išsiųsta tik paslėpto įvesties lauko reikšmė. Jei čekboksas pažymėtas, į serverį bus išsiųstos abiejų reikšmės su vienu pavadinimu. Bet, kadangi čekboksų reikšmė bus antroji, ji tiesiog perrašys pirmąją.

Taigi, dabar mūsų čekboksas siųs į serverį arba nulį, arba vienetą:

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

Naudokime tai mūsų patikroje:

<?php if (!empty($_GET)) { if ($_GET['flag'] === '1') { echo 'pažymėta'; } else { echo 'nepažymėta'; } } ?>

Naudodami varnelę paklauskite vartotojo, ar jam jau yra 18 metų, ar ne. Jei taip, leiskite jam prieigą prie svetainės, o jei ne - neleiskite.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti