Diskuze: Submit
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 16 zpráv z 16.
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nevím jestli se tě dobře pochopil, tak máš nějaký formulář a
kdyžzmáčknneš submit a chces to udělat znovu tak to musíš vyplnit zas...
Šlo by to udělat tak že by si hodnoty uložil do DB s nějakým klíčem
který by si náhodně vygneroval, ten klíč by si uložil do cookie a pak až
by chtěl uživatel vyplnit formulář tak by si se podívaldo cookie a vyhledal
hodnoty v DB a pomocí PHP by si je vyplnil.
Co sem napsal špatně že mně tak hodnotíte?
$priklad = $_POST['priklad'];<input value="<?=$priklad?>"/>
To by šlo udělat jen kdyby to byl stejný soubor
A já se za tam to omlovám, pokud by to byl jiný soubor tak byt šlo
takto:
Zpracovávací soubor:
$priklad = $_POST['priklad'];
header("Location: ./odeslani.php?priklad=$priklad");
Folmulář:
$priklad = $_Get['priklad'];
<input value="<php echo $priklad ?>">
Omlovám se za možné chyby psal sem to z hlavy
Děkuji za rady, ale spíše bych to potřeboval na ty radiobuttony a select s optionama.
Nevadí, ale mám ještě další dotaz. Mám stránku, na které se zobrazují data z databáze. Je tam i pár selectů a radiobuttonů, které určují jak data seřadit. Nakonec je tam <input type="submit">, který to všechno vyhodnotí a zobrazí data. To mi funguje, až na to že když spustím stránku poprvé (otevřu znovu prohlížeč) žádná data se nezobrazí. Vím, čeká to na zmáčnutí toho submitu. Šlo by to nějak udělat aby se data zobrazila hned po načtení stránky ?
Nemyslím tebe, myslím toho s diakritikou, však se podívej, na koho to
byla odpověď. Já nic
nevím.
To samozřejmě není pravda, je úplně jedno, kde uživatel přistane, jen je třeba, aby se někde v procesu zavolal ten skript - aby se zachovalo
John Ronald Reuel Tolkien Něco podobného se dá pochopitelně udělat i pro radio
buttony, selecty a vlastně cokoliv. Možná by se ti líbila knihovna Nette
Forms - normálně se používá jako součást Nette frameworku, ale dá se
použít i samostatně.
Další věc je, že zjevně nevíš, jak funguje odesílání formulářů a
komunikace se serverem obecně - Víš vůbec, proč funguje to zachování
hodnot?
Tohle:
<input value="<?= $_POST['priklad'] ?>">
funguje tak, že v superglobálním poli $_POST jsou hodnoty odeslané formulářem metodou POST, takže ty vezmeš hodnotu odeslanou tím formulářem a zobrazíš ji zpět. Když načteš stránku poprvé, formulář pochopitelně odeslaný není, proto je to prázdné - mimochodem bys to měl mít celé zaplněné chybami. To znamená, že musíš definovat alternativní zdroj dat - v tvém případě z databáze. Takže by to mohlo vypadat nějak takto:
if(isset($_POST['input_a'],$_POST['input_b'])){
$formValues = $_POST; // všechny hodnoty jsou odeslané, zobrazíme je znovu
} else {
// hodnoty nebyly odeslány, proto zobrazíme výchozí data z databáze
$defaults = getDefaultData(); // vrátí pole z databáze [key => value]
$formValues = $defaults;
}
...
<input name="input_a" value="<?= $formValues['input_a'] ?>">
<input name="input_b" value="<?= $formValues['input_b'] ?>">
Trošku jsem předělal tu Vaši podmínku s tím ISSET a funguje to. Děkuji
Zobrazeno 16 zpráv z 16.