Autor Zpráva
MilanJ
Profil
Na své stránce mám formulář, který zpracovává jiný soubor PHP.
Jednotlivá políčka formuláře jsou ošetřena JS kódem, který kontroluje jejich vyplnění a správnost obsahu.
Samozřejmě chci ošetřit formulář i v PHP tak, aby uživatel nemohl povinné políčko formuláře nevyplnit, když má vypnutý JavaScript

Předpokládejme, že uživatel má JS vypnutý a nevyplní povinné políčko formuláře.
Formulář začne začne být zpracováván soubore PHP, který byl uveden ve <form action="zpracuj.php" method="post">, najde prázdné políčko a formulář vrátí k opětovnému vyplnění se všemi už vyplněnými údaji včetně varovné zprávy, že dané políčko je třeba vyplnit.
Taková je má idea, nicméně nevím, jak zařídit, aby se objevila i ta varovná hláška a vyplněné údaje, které uživatel zadal správně.
Jak se to řeší? Jak se předávají hodnoty a chybové hlášky zpět do souboru s formulářem?

Ano, vím, že mohu nechat zpracovat formulář sám sebe, pak to není problém, mě ale zajímá řešení, kdy formulář zpracovává jiný soubor.

Budu rád za každý nápad. Díky moc.:-)
djlj
Profil
MilanJ
Asi bych to přesměroval zpět a do adresy bych přidal například &err=nick.

U formuláře by pak bylo

if($_GET['err']=="nick"){
echo "Vyplňte nick.";
}
WertriK
Profil
Asi jiná volba než to přesměrování zpět s nějakou error zprávou nebude možná, ale při tom přesměrování musíš taky předat ty proměnné, které uživatel zadal. Cpat do GET jednotlivé proměnné je nesmyl - ty proměnné dej nejdřív do pole potom serialize() a na původní strance použij unserialize() - jen taková rada ;)

http://cz2.php.net/manual/en/function.serialize.php
MilanJ
Profil
Možná by nebyla špatným řešením vytvořit SESSION, stránku přesměrovat v případě chyby zpátky a na stránce s formulářem načíst SESSION do polí formuláře, stejně jako chybovou hlášku.

Otázka zní, je-li lepší, nebo řekněme korektnější, použít SESSION nebo serialize() / unserialize()
nightfish
Profil
dát zobrazení formuláře i jeho vyhodnocení na jednu stránku

na jejímž začátku bude
$zobrazit = false;
$error = "";
v případě, že skriptu nebyla zaslána žádná data, nastaví $zobrazit na true
pak dojde k zpracování přijatých dat a ke kontrole správnosti
v případě, že nějaká povinná hodnota chybí, nastaví se $zobrazit na true a do $error[] se přidá popis toho, co chybí (třeba jméno, příjmení)

pokud bude $zobrazit == true, tak
pokud $error není prázdné, vypiš chybovou hlášku s tím, co chybí (např. echo "Ve formuláři nejsou vyplněny tyto povinné položky: ".implode(", ", $error);)
vypiš formulář (na to je vhodné mít buď třídu nebo funkce - např. vytvorInput($popisek, $name, $id, $velikost, $vychoziHodnota);)
MilanJ
Profil
nightfish
Formulář s vyhodnocení mám vytvořený a funguje jak má, teď potřebuji vytvořit formulář, který je zpracován jiným souborem.
Na důvody se mě neptejte, je to na dlouhý povídání.:-)

Tedy...SESSION nebo serialize() / unserialize() ?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0