Pojďme se podívat na několik praktických příkladů, jak využít formuláře a PHP.
21.7.2004 15:00 | Petr Zajíc | přečteno 89012×
Dnes si ukážeme několik praktických příkladů, jak využít formuláře v PHP. Podíváme se na to, jak si můžeme pomoci cizí prací a jak si ulehčit život při vyhledávání nápovědy k jazyku PHP.
Následující věc se až tak netýká samotného PHP jako formulářů obecně - pokud víte jak formuláře fungují, můžete si sestavit formulář, který bude zpracovávat někdo jiný. Tak například, pokud se dobře zadíváte na titulní stránku Linuxsoftu, zjistíte, že obsahuje několik formulářů - formulář pro přihlášení uživatele, formulář pro vyhledávání ve článcích, vyhledávání software a podobně. Když si necháte zobrazit zdrojový kód titulní stránky Linuxsoftu v prohlížeči, najdete tam například následující formulář:
<div
class="sub_title_orange">
<img alt=">" height="15" width="15"
src="img/sipka2.png">
Vyhledávání článků
</div>
<div align="center" class="menu" style="padding-top: 7px;
padding-bottom: 7px;">
<form action="http://www.linuxsoft.cz/article_list.php"
method="get">
<input name="search_article" value=""
size="20" type="text">
<input name="odesli" value="Hledat"
type="submit">
<br>
</form>
</div>
který v praxi vypadá následovně:
Klidně si to vyzkoušejte, protože to bude fungovat! Když budete
dávat příživnické formuláře na svoje vlastní stránky, měli byste si
nicméně uvědomit několik věcí:
Příkladů na příživnické formuláře by se dala vymyslet celá řada -
můžete mít na stránce formuláře, které bude zpracovávat vyhledávač,
formuláře pro nalezení telefonního čísla, na ověření IČO, formuláře na
přihlášení k nějaké službě a podobně.
Snažil jsem se přijít na nějaký neotřepaný příklad s formuláři -
tady jeden je. Chtějme mít formulář, který bude obsahovat rozevírací
seznam s příkazy v PHP, které jsme se již naučili. S tím, že po jeho
odeslání se nám zobrazí příslušná stránka nápovědy v PHP. Na stránkách
PHP je podobný formulář, ale tam se musejí příkazy napsat. My je budeme
mít přichystané.
Seznam příkazů si pro jednoduchost ukázky zadáme do nějakého pole. To může být celkem rozsáhlé, nám bude pro pochopení stačit následující:
<?
$prikazy=Array("echo", "print", "date", "print_r", "sort");
?>
V PHP manuálu jsou jednotlivé funkce a příklady uvedeny na stránkách, které mají logické názvy. Takže například funkce sort má českou stránku nápovědy na http://cz.php.net/manual/cs/function.sort.php a tak dále. Skript pro vyhledávání by tedy mohl vypadat třeba nějak takto:
<?
function Prikazy()
{
//zkráceno
}
if (empty ($_POST["odeslat"]))
{
?>
<form method="POST" action="<?echo $_SERVER["PHP_SELF"]?>">
Vyber příkaz: <? Prikazy(); ?>
<input name="odeslat" value="Odeslat"
type="submit">
</form>
<?
}
else
{
Header("Location:
http://cz.php.net/manual/cs/function.".$_POST["prikaz"].".php");
}
Ukázat celý skript | Spustit skript
A můžeme si v něm všimnout následujících věcí: Formulář se skládá z
rozevíracího seznamu a odesílacího tlačítka. Seznam plníme pomocí
funkce Prikazy, která (je to vidět při zobrazení celého skriptu) pole
příkazů nejprve definuje a pak řadí. Protože při zobrazování
manuálových stránek php jsou případná podtržítka nahrazena pomlčkami,
je tam použito nahrazování pomocí funkce str_replace.
Jelikož při odesílání tohoto formuláře prakticky uživatel nemůže
udělat chybu, úplně jsme vynechali kontroly odeslaných dat. Je jisté,
že něco zkrátka odejít musí, a pokud neuděláme chybu v názvu funkce,
mělo by to fungovat.
Jakmile se stránka odešle, máme k dispozici proměnnou $_POST
["prikaz"], která obsahuje vybraný příkaz. A byl-li formulář odeslán,
pokusíme se ji zobrazit. Pro nás dosuh neznámá funkce Header() funguje
tak, že se pokusí propašovat do záhlaví požadavku nějaké svoje věci a
ještě ji budeme rozebírat. Momentálně stačí, když si řekneme, že volání
funkce header v tomto tvaru způsobí, že se nenatáhne stránka, na níž
tento příkaz je (tedy např.
http://www.linuxsoft.cz/php/examples/28_funkce.php), ale natáhne se
stránka uvedená v řetězci Location.
Skript lze pochopitelně rozšiřovat, například seznam funkcí které má rozevírací seznam zobrazit nemusí být uložen v poli, ale někde jinde. Zrovna mě napadá, že by klidně mohl být v textovém souboru. Což nás přivádí k dalšímu dílu PHP seriálu, který se bude právě souborům věnovat.