PHP – zpracování dat z formulářů

22. června 2000

V minulém díle seriálu jsme se mimo jiné seznámili s používáním proměnných a operátorů a ukázali jsme si, jak se předávají skriptu vstupní údaje jako součást URL. V tomto díle využijeme těchto znalostí a ukážeme si, jak jednoduše zpracovávat data z formulářů a jak je pomocí funkce Mail odeslat na určený e-mail.

Abychom měli vše o proměnných a operátorech pěkně pohromadě, nejprve zde uvedu malé shrnutí typů proměnných:

$a = 25; proměnná typu integer (celé číslo
$a = 1.618; proměnná typu double (reálné číslo)
$a = „Interval je nejlepší.“; proměnná typu string (řetězec)
$a[0] = „Mikuláš“; $a[1] = „Albín“; $a[2] = „Fridolín“; proměnná typu array (pole)
$a = Array („Mikuláš“, „Albín“, „Fridolín“); pohodlnější naplnění pole
$a = Array (Array (1, 2, 3, 4), Array (5, 6, 7, 8)); vícerozměrné pole (v minulém díle nebylo popsáno, např. $a[2][4] je teď rovno 8)
/* v PHP existuje i datový typ object (objekt), ten však v dohledné době potřebovat nebudeme */

O převod jednotlivých typů proměnných se PHP většinou stará samo, je však možné i ruční přetypování, např. takto:

$a = 456;
$a = (double) $a; $a je teď typ double (desetinné číslo)

V následujících tabulce je přehled v PHP užívaných operátorů:

$c = $a + $b; $c = $a – $b; $c = $a * $b; $c = $a / $b; sčítání, odčítání, násobení, dělení
$c = $a % $b; zbytek po dělení (mod), např. 23 % 5 je 3
$a++; $a–; zvýší hodnotu $a o 1, sníží hodnotu $a o 1
++$a; –$a; totéž, ale nejprve provede operaci, poté vrátí hodnotu (viz níže)
$a = 5; $b = $a++; v $a je 6, v $b je 5 (nejprve se provedlo přiřazení, pak přičtení)
$a = 5; $b = ++$a; v $a je 6, v $b je 6 (nejprve se provedlo přičtení, pak přiřazení)
$c = $a . $b; spojení dvou řetězcových proměnných
$a += $b; ušetříme si práci, funguje stejně jako $a = $a + $b;
$a -= $b; $a *= $b; $a /= $b; $a %= $b; $a .= $b; podobné ušetření práce pro ostatní operátory
/* další operátory slouží pro manipulaci s binárním zápisem čísla, s těmi si však zatím hlavu zatěžovat nebudeme */

V předchozím díle jsme si také ukázali, jak předat skriptu obsahy proměnných jako součást URL, např. takto:

http:php.novyden.cz/ukazka3.php?petr=154&pavel=176&karel=189

Jak již bylo řečeno minule, podobně funguje, pokud předáváme výsledky formuláře metodou GET. Výbornou vlastností PHP je to, že ať už odesíláme data z formuláře metodou GET (vhodná pro malý objem dat) nebo POST, vždy dostaneme na vstupu skriptu všechny údaje jako proměnné. Proměnné budou mít stejná jména jako prvky formuláře, pouze s přidaným znakem $. Nemusíme se vůbec starat o to, aby se data správně zakódovala a rozkódovala – PHP je natolik inteligentní, že vše udělá za nás. Nyní malý příklad, jak vše funguje – nejprve vytvoříme jednoduchý formulář a pojmenujeme ho třeba form.php:

<html>
<head>
<meta http-equiv=“Content-Type“ content=“text/html; charset=windows-1250″>
<title>PHP – formulář</title>
</head>
<body bgcolor=“#FFFFFF“ text=“#000000″>
<form action=“zpracuj.php“ method=“get“>
<center><font face=“Arial CE, Arial“ size=“5″>
Petr měří <input type=“text“ name=“petr“ size=“4″> cm.<br>
Pavel měří <input type=“text“ name=“pavel“ size=“4″> cm.<br>
Karel měří <input type=“text“ name=“karel“ size=“4″> cm.<br>
<input type=“submit“ value=“Spočítej průměrnou výšku“>
</font></center>
</form>
</body>
</html>

Opět zde máme hrdiny Petra, Pavla a Karla, tentokrát však jejich výšky nebudeme muset pracně smolit do adresy, ale pohodlně je vepíšeme do polí formuláře (ten má sice příponu .php, ale jde pouze o klasický HTML kód). Zadané hodnoty dostane v proměnných pojmenovaných podle polí formuláře (tedy $petr, $pavel a $karel) skript určený atributem action, v tomto případě tedy zpracuj.php, který je ve stejném adresáři jako formulář. Jako metodu předání dat jsme určili GET, data tedy budou předána jako součást URL. Při použití metody POST by však vše fungovalo stejně. Samotný skript zpracuj.php vypadá analogicky jako skript uvedený v předchozím díle:

<html>
<head>
<meta http-equiv=“Content-Type“ content=“text/html; charset=windows-1250″>
<title>PHP – zpracování formuláře</title>
</head>
<body bgcolor=“#FFFFFF“ text=“#000000″>
<center><font face=“Arial CE, Arial“ size=“5″>
<?php
$prumerna_vyska = ($petr + $pavel + $karel)/3;
echo „Průměrná výška je $prumerna_vyska cm.“;
?>
</font></center>
</body>
</html>

Protože lidé jsou v jádru zvědaví, určitě nás zajímá, co nám to v tom formuláři vlastně návštěvníci vyplňují (proč by měli údaje o průměrné výšce znát jenom oni?:o)). Jinými slovy, určitě budeme chtít odeslat data z formuláře na naši mailovou adresu. K tomu slouží funkce s příznačným názvem Mail. Může vypadat třeba takto:

Mail („miroslav.kucera@interval.cz“, „Chvala Intervalu“, „Interval je moc pekny, nejvic se mi ale libi bajecny serial o PHP.“, „From: ctenar@post.cz“);

Funkce Mail má popořadě tyto parametry: e-mail adresáta, předmět mailu a text mailu. Čtvrtý parametr je nepovinný a lze pomocí něj definovat další hlavičky mailu. Protože anonymní chvála by neudělala takovou radost, připojíme e-mail odesílatele.

Je vidět, že odeslání e-mailu pomocí PHP je opravdu jednoduché. My funkci Mail hned použijeme k prvnímu opravdu užitečnému skriptu, který umožní návštěvníkům naší stránky zaslat nám jejich reakci bez toho, aby museli spouštět mailový program. Vytvoříme dva soubory a nazveme je třeba mail.php a odesli.php. První z nich – mail.php – bude opět jen jednoduchý formulář:

<html>
<head>
<meta http-equiv=“Content-Type“ content=“text/html; charset=windows-1250″>
<title>PHP – odeslání e-mailu</title>
</head>
<body bgcolor=“#FFFFFF“ text=“#000000″>
<form action=“odesli.php“ method=“post“>
<center><font face=“Arial CE, Arial“ size=“5″>
Váš e-mail:<br>
<input type=“text“ name=“od“ size=“30″><br>
Předmět:<br>
<input type=“text“ name=“predmet“ size=“40″><br>
Váš vzkaz:<br>
<textarea name=“vzkaz“ rows=“10″ cols=“40″></textarea><br>
<input type=“submit“ value=“Odešli!“>
</font></center>
</form>
</body>
</html>

Na formuláři není nic složitého, obsahuje jen tři vstupní pole pro e-mail odesílatele, předmět mailu a samotný vzkaz. Ještě jednodušší je skript odesli.php, který data z formuláře odešle:

<?php
Mail („jiri.lahvicka@interval.cz“, $predmet, $vzkaz, „From: $od“);
?>
<html>
<head>
<meta http-equiv=“Content-Type“ content=“text/html; charset=windows-1250″>
<title>PHP – odeslání e-mailu</title>
</head>
<body bgcolor=“#FFFFFF“ text=“#000000″>
<center><font face=“Arial CE, Arial“ size=“5″>
Váš vzkaz byl odeslán.
</font></center>
</body>
</html>

Vidíme, že kromě obyčejného HTML kódu, který pouze informuje o tom, že e-mail byl odeslán, skript obsahuje pouze jeden PHP příkaz, který za nás udělá všechnu práci s odesíláním. Samotný příkaz je sice umístěn na začátku skriptu, ale je možné ho umístit na libovolné místo. Pokud budete skript používat sami, nezapomeňte nahradit moji adresu tou adresou, na kterou chcete maily dostávat!

Shrnutí anebo co si je třeba pamatovat

  • Skript, který zpracovává data z formuláře, má tato data automaticky k dispozici v proměnných, které se jmenují stejně jako příslušná pole ve formuláři.
  • K odeslání e-mailu slouží v PHP funkce Mail.

Možná vás napadlo, že by nebylo špatné znemožnit odeslání nevyplněného formuláře nebo dát návštěvníkovi možnost nechat si poslat kopii na svou adresu. K tomu se nám budou hodit podmínky, na které se zaměřím příště. Podíváme se také na různé typy cyklů a na to, co dělat, když je ve skriptu chyba.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

1 komentář

  1. Lukáš

    Úno 25, 2012 v 21:25

    Dobrý den, skoušel jsem ten formulář, ale nepracuje to správně, dokonce jsem to přesne zkopíroval, ale pořád mi vypisuje pruměr 0. mám to na této stránce phpweb.php5.sk

    Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *