LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (27) - Příklady na formuláře

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 | Články autora | přečteno 80820×

Komerční sdělení: Pořádáme Kurzy PHP

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.

Příživníci

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="&gt;" 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ě:

> Vyhledávání článků

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í:

  • Atribut action v tagu FORM je lepší zadat absolutně, tedy včetně http://www.nejakyserver.domena.
  • Pakliže je formulář odeslán skriptu php, musí být s php schopen pracovat cílový server (ne tedy nutně ten, z něhož je formulář odesílán)
  • Když se spoléháte na cizí služby, počítejte s tím, že to nemusí fungovat na 100%. Kdoví, zda stránka http://www.linuxsoft.cz/article_list.php bude existovat ještě zítra - majitel webu se například může rozhodnout ji přejmenovat.
  • Někdy mohou s využíváním cizích formulářů souviset licenční nebo právní otázky, takže je dobré na to myslet.

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ě.

Náš příklad

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:&nbsp; <? 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.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

8.5.2016 17:19 /Redakce Linuxsoft.cz
PR: Dne 26.5.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, cloudové služby, infrastruktura cloudu, efektivní využití cloudu, možné nástrahy cloudů a jak se jim vyhnout
Přidat komentář

21.4.2016 8:01 /František Kučera
Spolek OpenAlt zve na 127. distribuovaný sraz příznivců svobodného softwaru a otevřených technologií (hardware, 3D tisk, SDR, DIY, makers…), který se bude konat ve čtvrtek 28. dubna od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

2.3.2016 22:41 /Ondřej Čečák
Letošní ročník konference InstallFest již tento víkend!
Přidat komentář

14.2.2016 16:39 /Redakce Linuxsoft.cz
O víkendu 5. a 6. března 2016 proběhne na pražském Strahově 8. ročník tradiční konference InstallFest. Celkem za dva dny uvidíte ​30 přednášek​ a ​6 workshopů.
Přidat komentář

5.2.2016 17:38 /Petr Ježek
Utilitka z XFce "xfce4-power-manager" nejen umožňuje nastavení lhůty pro uspání či hybernaci, ale i zapínání a vypínání prezentačního módu pro nerušené sledování videí. Stačí ji nastavit v každém vybavenějším panelu a v jakémkoli nontiled WM/DE.
Přidat komentář

10.1.2016 11:32 /Pavel `Goldenfish' Kysilka
LinuxMarket změnil provozovatele. Nově jej provozuje Marek Pszczolka. Více info a detaily #1 a #2.
Přidat komentář

29.12.2015 11:38 /Ondřej Čečák
Ještě posledních pár dní můžete přidávat příspěvky nebo nápady na Install Fest 2016, který se bude konat 5. a 6. března 2016.
Přidat komentář

8.12.2015 11:36 /Petr Ježek
Logické se stává realitou. LibreOffice a Thunderbird se mají dle článku na Redditu stát protiváhou MS řešení (MS Office a Outlook).
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

10.6.2016 21:10 / pavel riha
FreeBSD 10.3 a virtualizace

8.6.2016 21:56 / Milan Gallas
Nevalidní prefix m

7.5.2016 14:58 / Teodor Komárek
Soubory

20.4.2016 0:07 / Jakub Cleing
Sázkový panel PHP FUSION

9.4.2016 9:43 / jiwopene@gmail.com
Re: problém s dpkg a nemožností instalovat

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2016) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze