Relace a formuláře v PHP
Předpokládejme, že máme dva soubory PHP. V
souboru test1.php umístíme formulář, který se
zeptá uživatele na dvě čísla:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Ve stejném souboru umístíme kód pro zpracování formuláře. V tomto kódu zapíšeme data ze vstupů do relace:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Důležitý nuance: v souboru musí kód pro zpracování formuláře být umístěn před samotným formulářem. Proč: protože v tomto kódu pracujeme s relací, a to znamená, že před tím nesmí být žádný výstup na obrazovku.
Nyní v souboru test2.php najdeme
součet čísel uložených v relaci:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
V jakém pořadí by to všechno mělo
fungovat? Nejprve uživatel přejde na
stránku test1.php, vyplní formulář
a klikne na tlačítko. Poté se opět dostane
na test1.php, ale již s odeslanými
daty formuláře. Přitom se dostane do podmínky,
ve které zapisujeme data z formuláře do relace.
Poté musí uživatel ručně přejít na
stránku test2.php - a tam uvidí
součet zadaných čísel.
Můžete se ptát: proč to takhle komplikovat? Vždyť
šlo okamžitě odeslat formulář na stránku
test2.php. Jde o to, že v tomto
případě je výhoda v tom, že samotný formulář a kód
jeho zpracování jsou umístěny na jedné stránce.
To samozřejmě není vždy výhodné, ale někdy
je to potřeba.
Na jedné stránce se pomocí formuláře zeptejte uživatele na příjmení, jméno a věk. Zapište tato data do relace. Při přechodu na jinou stránku tato data vypište na obrazovku.