Algoritmy s PHP |
Ján Guniš, PF UPJŠ, Košice |
Občas potrebujeme do aplikácie napísanej v PHP zapojiť (aktívne) aj užívateľa. Jednou z možností ako to dosiahnuť je použitie formulárov. Jazyk HTML poskytuje celkom slušnú podporu formulárov. Nič nám teda nebráni v tom, aby sme dáta z formulára poskytli na spracovanie nejakému PHP skriptu.
Pre vkladanie formulára do stránky slúži párová značka <FORM>. Aby bol formulár funkčný, je potrebné použiť ešte dva atribúty ACTION a METHOD. ACTION určuje meno skriptu (nemusí to byť nutne PHP skript), ktorý bude spracovávať údaje poslané z formulára. METHOD určuje spôsob, akým budú dáta predané naspäť serveru. Použiť môžeme metódy, POST a GET. Metóda GET je vhodnejšia pre menšie objemy dát z menších formulárov, pretože tieto sa pripájajú na na koniec URL ukazujúceho na obslužný skript. Metóda POST je vhodnejšia pre väčšie formuláre a pre väčšie objem dát. V tomto prípade sa dáta prenášajú v tele http požiadavky. Z hľadiska práce so skriptami v tom nie je žiadny rozdiel.
Stručne povedané, základ formulára vyzerá nasledovne:
<form action="meno_skriptu.php3" method=post(get)>
definícia formulára
</form>
Vo formulári môžeme používať tri základné elementy:
INPUT - slúži na definíciu väčšiny prvkov, vstupné polia, polia pre heslo, zaškrtávacie okienko, prepínač, tlačidlo pre mazanie a odoslanie formulára, skryté polia, odosielanie súborov, tlačidlá s obrázkom
SELECT - zoznamy, z ktorých môžeme vybrať jednu, alebo viac položiek
TEXTAREA - vstupný formulár pre viacriadkový text
Každý element má vo formulári svoje meno. K jeho hodnote pristupujeme v skripte cez rovnomennú premennú.
Pri tvorbe formulárov môže nastať niekoľko situácií. HTML dokument posiela dáta skriptu, PHP skript (ktorý vygeneruje formulár) posiela dáta inému skriptu alebo PHP skript posiela dáta sám sebe. Je teda schopný formulár vygenerovať a zároveň spracovať príslušné dáta. Posledný prípad ukazuje aj nasledujúci príklad.
//názov súboru, v ktorom je uložený tento text je formulár.php3
//podľa hodnoty $odoslal vieme, či skript je volaný prvý krát, alebo či už má spracovať dáta
if ($odoslal==ano): //prípad, že formulár bol odoslaný
//vypis hodnôt jednotlivých vstupných polí
echo "Hodnoty zaslané z formulára<br>";
echo "Meno: " . $meno . "<br>";
echo "Knihy: " . $kniha . "<br>";
echo "Casopisy: " . $casopis . "<br>";
echo "CD: " . $cd . "<br>";
echo "MC: " . $mc . "<br>";
echo "Môj vek a pohlavie: " . $vek_pohl. "<br>";
echo "Môj stav: " . $stav . "<br>";
echo "Pripomienky: " . $pripomienky . "<br>";
echo "Heslo: " . $heslo . "<p>";
// možnosť zavolať formulár ešte raz, v podstate metódou get pošleme hodnotu premennej $odoslal
echo "<a href='formular.php3?odoslal=nie'>Opakovať</a>";
else: //prípad, že formulár nebol odoslaný
echo "Toto je pokusny formular<br>\n";
echo "Vyberte si<p>";
// začiatok formulára, dáta sa posielajú skriptu formular.php3
echo "<form action='formular.php3' method=post>";
// vstup textu, hodnota bude v premennej $meno
echo "Zadajte svoje meno: <input type='text' name='meno'><p>";
// zaškrtávacie okienko
echo "Mám záujem o:<br>";
echo "knihy <input type='checkbox' name='kniha' value='ano'><br>";
echo "časopisy <input type='checkbox' name='casopis' value='ano'><br>";
echo "CD <input type='checkbox' name='cd' value='ano'><br>";
echo "MC <input type='checkbox' name='mc' value='ano'><p>";
// prepínač
echo "Som:<br>";
echo "chlapec <input type='radio' name='vek_pohl' value='chlapec'><br>";
echo "dievča <input type='radio' name='vek_pohl' value='dievca'><br>";
echo "muž <input type='radio' name='vek_pohl' value='muz'><br>";
echo "žena <input type='radio' name='vek_pohl' value='zena'><p>";
// výber z možností, povolená je len jedna možnosť
echo "Môj stav:<br>";
echo "<select name='stav' size=1>";
echo " <option value='zenaty'>ženatý/á";
echo " <option value='slobodny'>slobodný/á";
echo " <option value='rozvedeny'>rozvedený/á";
echo " <option value='vdovec'>vdovec/vdova";
echo "</select><p>";
// viacriadkový text
echo "Ďalšie pripomienky <textarea rows='2' name='pripomienky' cols='20'></textarea><p>";
// vstup pre heslo, pri písaní sa zobrazia **
echo "Heslo, ktoré chcem používať <input type='password' name='heslo'><p>";
// skryté pole, veľmi výhodné ak potrebujeme posielať riadiace dáta pre skript
echo "<input type='hidden' name='odoslal' value=ano>";
// tlačidlo pre odoslianie
echo "<input type='submit' name='odoslať'>";
// tlačidlo pre reset (vymazanie) formulára
echo "<input type='reset' name='zmazať'>";
//koniec formulára
echo "</form>";
endif;
?>
Ako tento skript funguje si môžete vyskúšať tu.