Autor | Zpráva | ||
---|---|---|---|
Nevim Profil * |
#1 · Zasláno: 17. 2. 2012, 22:40:23
Ahoj, možná mám trochu banální problém, ale nějak jsem se tu zasekl. Když jsem to zkoušel odpoledne, fungovalo to a najednou nic, tak nevím co s tím:
if(!empty($_POST)) echo "Chyba"; else echo "Ok"; if($_POST["input"] == "") , ale když máte formulář s 20 kolonkama tak je to trošku dlouhý, jak se dá taková kontrola formuláře dělat?
|
||
TomasJ Profil |
if(empty($_POST)) Měl jsi tam negaci (!) a tedy jsi měl podmínku pokud(není prázdná($_POST)) echo "Chyba";
|
||
Someone Profil |
Nevim:
Jen bych rád zdůraznil, že jak jsi mluvil o 20 kolonkách, tak ti projde i toto $pole = array("jedna", "dve", "tri", "ctyri", ""); if(empty($pole)) { echo "Pole je prázdné"; } else { echo "Pole není prázdné"; } edit: oprava, vypíše false jako že NENÍ prázdné, což se ti podle mě nehodí. |
||
TomasJ Profil |
Someone:
V tom máš asi pravdu... Nevim: Pokud chceš čistě jen ověřit, jestli je nějaká proměnná prázdná nebo nulová (za předpokladu že je vytvořená), stačí ti if($_POST['input']) echo "Neni prazdne"; .
Pokud hodnota může být nulová, použil bych asi if(empty($_POST['input'])) echo "Je prazdne."; .
Nejspíš ti bude PHP vypisovat (pokud máš zaplé) Poznámky (Notice) o tom, že proměnná neexistuje atp. Na to je podmínka if(isset($_POST['input'])) .
|
||
Keeehi Profil |
if(!isset($_POST)) echo "Formulář nebyl odeslán"; else echo "Formulář byl odeslán"; if(in_array("",$_POST)) echo "Ve formuláři je alespoň jedna prázdná položka"; else echo "Všechny položky byly vyplněny"; |
||
Nevim Profil * |
#6 · Zasláno: 18. 2. 2012, 11:17:22
Tak to empty vůbec nefunguje, nevím proč, zkoušel jsem to co psal Keeehi s tím empty a nejde to. Až to in_array funguje, díky
Jenom dotaz, proč jsou v tom in_array ty prázdné uvozovky? |
||
Keeehi Profil |
#7 · Zasláno: 18. 2. 2012, 12:04:45
Nevim:
Protože empty u polí neleze dovnitř polí do hodnot ale kontroluje, zda tam nějaké jsou. empty vrací true, pokud proměnná je: "" (prázdný řetězec), 0 (0 jako integer), 0.0 (0 jako float), "0" (0 jako řetězec), NULL, FALSE, array() (prázdné pole), nebo do ní nebyla ještě přiřazena žádná hodnota. isset vrací true, pokud je proměnná definována a zároveň není její hodnota NULL „Jenom dotaz, proč jsou v tom in_array ty prázdné uvozovky?“ Funkce in_array() hledá v poli nějakou položku. Pokud ji najde, vrací true jinak false. Ty dvě uvozovky jsou prázdný řetězec a to se snaží ta funkce najít -> pokud je v poli kdekoliv prázdný řetězec, vrací se true. |
||
Bertram Profil |
Nevim:
Ahoj, pokud nevyžaduješ žádnou validaci odeslaných dat, tak bude stačit ověřit existenci odesílacího tlačítka v $_POST. Jinak si můžeš validaci zjednodušit funkcí, které předáš došlé data z formuláře společně s polem povinných inputů. Pomocí této funkce ti odpadne nutnost psát if() pro každý input formuláře. "těch tvých dvacet" |
||
Nevim Profil * |
#9 · Zasláno: 19. 2. 2012, 11:50:12
No existenci tlačítka ověřovat nemůžu, potřebuju vědět, jestli ve formuláři byli vyplněny všechny položky. dělal jsem to if($_POST["pole1"] == "" &&$_POST["pole2"] == "" ) atd ale ten if byl třeba i na 3 řádky.
Funkce in_array() hledá v poli nějakou položku. Pokud ji najde, vrací true jinak false. Ty dvě uvozovky jsou prázdný řetězec a to se snaží ta funkce najít -> pokud je v poli kdekoliv prázdný řetězec, vrací se true in_array() zatím funguje, akorát nechápu to že hledá prázdný řetězec, já tam přece žádný nemám. nevrací náhodou při prázdným řetězci false? |
||
TomasJ Profil |
|||
Bertram Profil |
#11 · Zasláno: 19. 2. 2012, 12:25:51
Nevim:
Nástin možného řešení, je tam ještě co vylepšovat, každopádně je to spustitelné a funkční, můžeš si to vyzkoušet. <?php header('Content-Type: text/html; charset=utf-8'); $required = array("jmeno", "prijmeni", "email"); function validate($data, $required) { foreach ($data as $key => $value) { if (in_array($key, $required)) { if (trim($value) == "") { $errors[$key] = "$key je povinný údaj"; } } } return isset($errors) ? $errors : $errors = array(); } function getValue($inputName){ return isset($_POST[$inputName]) ? $_POST[$inputName] : ""; } if (isset($_POST["send"])) { $errors = validate($_POST, $required); if (empty($errors)) { echo "Data v pořádku"; var_dump($_POST); } else { echo "Nastaly chyby:"; echo var_dump($errors); } } ?> <html> <body> <form action="" method="post"> <p>Jméno: <input type="text" required="required" name="jmeno" value="<?php echo getValue('jmeno'); ?>" /></p> <p>Příjmení: <input type="text" required="required" name="prijmeni" value="<?php echo getValue('prijmeni'); ?>" /></p> <p>Email: <input type="text" required="required" name="email" value="<?php echo getValue('email'); ?>" /></p> <p>Nepovinné: <input type="text" name="nepovinne" value="<?php echo getValue('nepovinne'); ?>" /></p> <p><input type="submit" name="send" value="odeslat" /></p> </form> </body> </html> |
||
Časová prodleva: 12 let
|
0