Možnosti PHP

letmý nástin pro začátečníky

Snadný zápis - Zpracování formulářů - Spolupráce s databázemi - Vkládání souborů - Odesílání mailů - Kombinace formulářů, databáze a pošty - A další...

Pokud máte nainstalovaná PHP na serveru nebo u sebe, můžete testovat. Co to všechno dokáže: 

Snadný zápis

PHP skripty jsou programy běžící na serveru. Píšou se podobně jako normální HTML, jenom občas obsahují <? kousek PHP kódu ?>, který je serverem při odesílání vyhodnocován. 

Takže kdo umí HTML a je zvyklý v něm psát stránky, může si nyní vyšperkovat stránku nějakým PHP příkazem. Prostě napíše znaky <? , vloží PHP kód, uzavře to znaky ?> a je hotovo.

Příklad

<body>
<p>Úplně normální text 
<? echo "s kouskem textu, který napsalo PHP" ?>
.</p>

Pravděpodobně nejpoužívanějším PHP příkazem je echo, který něco vypíše do výstupu stránky.

Proměnné začínají znakem dolaru, příkazy se ukončují středníkem. Zápis jazyka PHP je velmi podobný jazykům C, Java nebo Perl.

Zpracování formulářů

Začínající autory stránek vždycky mrzí, že zajištění funkčnosti formulářů není žádná sranda. Jakmile ale pochopíte základy formulářů (včetně způsobu, kterým předávají data), zpracování v PHP bude snadné. 

Příklad

Budu mít dva soubory

  1. formular1.html s jedním vstupním polem (úplně obyčejné HTML)
  2. zpracovani_formulare1.php

Soubor formular1.html (Vypisuji bez hlaviček.):

<body>
<form method="GET" action="zpracovani_formulare1.php" >
<p>Zadejte oblíbené jídlo: 
<input type="text" name="jidlo" size="20"> 
<input type="submit" value="Odeslat"></p>
</form>
</body>

A soubor zpracovani_formulare.php:

<body>
<H1>Zpracování formuláře</h1>
<p>Výborně! Zajdeme si někdy na čaj a k tomu si dáme 
<? echo $jidlo ?>!
</body>

Příklad si můžete zobrazit (pozn.: nebude fungovat ve stažené verzi).

Všimněte si prosím těchto věcí:

  1. Formulář má nastavenou action na jméno php souboru, který to bude zpracovávat. 
  2. Ten PHP soubor obsahuje jak obyčejné HTML (<p>Výborně...), tak PHP kód oddělený znaky <? a ?>. Vše, co je mezi nimi, je PHP program, který server vyhodnocuje (to je to echo $jidlo).
  3. Formulář obsahoval vstupní pole (<input>) se jménem name="jidlo". PHP skript přebírající formulář si automaticky založí proměnnou $jidlo, obecně $jméno_pole. (Ten dolar $ je pro PHP označení, že jde o proměnnou.) Hodnotou proměnné $jmeno je to, co zadal uživatel do formuláře (před odesláním).

PHP příkaz echo pak už jenom vypíše hodnotu proměnné a celé to odešle prohlížeči. Samozřejmě se s tou proměnnou dají dělat i úpravy, např. zjistit, zda není prázdná atd.; PHP má celou řadu příkazů. 

Tolik jenom drobný nástin o zpracování formulářů v PHP. 

Vkládání souborů

Kdo někdy dělá stránky se složitější navigací a designem, tomu v HTML velmi chybí značka, která by do určitého místa kódu vložila jiný soubor. PHP to umí.

Na dané místo se prostě napíše 
<? include "cesta/jmeno_souboru"; ?>
a je hotovo. Při odesílání souboru klientovi tam server vloží obsah toho souboru.

Nejčastěji se to používá právě na vkládání různých záhlaví, zápatí, navigačních sloupců atp. Dá se ale vložit i jiný PHP skript, což má různé výhody, zejména se tak načítají uživatelské PHP knihovny.  

Spolupráce s databázemi

Databáze musí běžet na serveru. Je to program, který umí ukládat informace do tabulek, rychle je třídit, filtrovat a poskytovat jiným programům -- třeba modulu PHP. Je to hlavní zbraň PHP skriptů. 

Převážná většina pořádných internetových serverů nějakým způsobem pracuje s databází. 

Databází existuje hodně druhů, například MS Acces, PostgreeSQL, MySQL atd. Jako databáze se dá dokonce využít například tabulka Excelu (není to ale praktické). Nejoblíbenější mezi programátory PHP je patrně databáze MySQL, protože je rychlá, existuje pro všechny platformy a je zadarmo (pro vlastní nebo nekomerční použití). 

Ke každé databázi přistupuje PHP pomocí jiných funkcí. Naštěstí jsou si ty funkce pro různé databáze dost podobné; většina autorů navíc pracuje pouze s jednou databází, takže jim stačí naučit se jednu sadu funkcí. Také už existují univerzální rozhraní (např. ODBC).

Přímo k databázi se přistupuje pomocí jazyka SQL. Je to jazyk velmi jednoduchý a standardní. Příkazy SQL se píší jako parametry určitých PHP funkcí. Pak už vlastně soubor obsahuje tři jazyky: HTML, PHP a SQL. Naštěstí to není takový zmatek, protože SQL příkazy jsou krátké.

Schéma spolupráce PHP s databází

Příklad návrhu databáze

Tak třeba internetový zpravodajský server má články uložené v databázi "noviny", jejíž hlavní tabulka se jmenuje clanky a může mít tuto strukturu:

id titulek uvod clanek rubrika autor datum
1 Pes nepřítelem Kdysi jsme referovali o zvláštním vztahu koček  a psů. Dnes další informace. Proč se psi bojí koček? Protože je žerou. Ale ne všechny... Zvířata Ajči 2001-11-29
2 Proč mám Paegas Jaká kritéria u mě vedla při výběru operátora?   Protože Paegas inzeruje v Respektu... Komunikace Yuhů 2001-11-30

Tato tabulka může být v praxi velmi velká. Není nikde vidět, jen je uložena v databázi. Pomocí PHP a SQL se z ní ale dají tahat data.

Následující kód je strašidelný. Nebojte se ho. V praxi se jenom kopíruje a mění se údaje. V příkladu předpokládám, že moje databáze je MySQL.

V první fázi příkladu se navazuje spojení s databází. Ta obvykle sídlí na tomtéž počítači (localhost). Zadává se jméno a heslo, přidělené správcem, vybírá se databáze (noviny). 

Následuje zápis SQL příkazu. V něm se říká, že se mají vybrat všechna pole (to je ta hvězdička) z tabulky clanky a seřadit podle data (order by datum). Získaná data se načtou do proměnné $vysledek. 

<h1>Výpis článků</h1>
<?
$spojeni = mysql_connect(localhost,"jmeno","heslo" );
mysql_select_db(noviny, $spojeni);
$vysledek = mysql_query( 
"select * from clanky order by datum", 
$spojeni);

/* Konec přímé práce s databází. */

while ($zaznam = mysql_fetch_array($vysledek) ): 
echo "<p><a href='vypisclanku.php?id=";
echo $zaznam["id"]; 
echo "'>";
echo $zaznam["titulek"];
echo "<br> "; 
echo $zaznam["uvod"];
echo "<br>";
echo "Autor: "
echo $zaznam["autor"];
echo "</p>";
endwhile;
?>

Podívejte se na nefunkční simulaci

Druhá část příkladu pouze tahá záznamy z proměnné $vysledek, dělá z ní pole $zaznam, výstup obaluje HTML tagy <br>, <a> a <p>. Pokud nerozumíte této části, pusťte ji z hlavy, stačí, když ji budete měnit podle potřeby. Jediné, co je tam důležité, jsou jména polí, odpovídající záhlaví tabulky v databázi.

Možnosti SQL  

Hlavní věc je ten SQL dotaz. Jeho modifikací lze například: 

Jistě jste si všimli, že SQL je taková angličtina. Příručky o SQL se dají najít na webu. Pomocí SQL se dají i tvořit databáze a nastavovat práva, ale to se už většinou nedělá prostřednictvím PHP. 

Odesílání mailů

Jazyk PHP obsahuje funkci mail(). Skript, který tuto funkci obsahuje, dělá dvě věci: 

  1. odešle mail podle zadaných parametrů
  2. vygeneruje HTML výstup jako jiný normální php skript, většinou je tam napsáno, že zpráva je odeslána (není podmínkou). 

Příklad

<h1>Odesílání zprávy</h1>
<? 
mail("tiangcemin@china.gov", "Svobodu Tibetu", "Chinese go home!");
echo "<p>Zpráva byla odeslána</p>"
?>

Tento skript by na adresu pana Tiang Ce Mina měl odeslat zprávu s předmětem Svobodu Tibetu, v textu mailu pak bude anglická výzva pro odchod. (Parametry se častěji předávají pomocí proměnných.) 

Záludnosti

Správně by měl příklad vypadat jinak. Ne vždy se totiž mail podaří opravdu odeslat. V praxi se funkce mail obaluje příkazem if() a výstupem je hlášení o úspěchu, nebo neúspěchu. Zkráceně:
if( mail(parametry)) 
echo "úspěch" 
else echo "neúspěch";

Čím může být způsobeno neúspěšné odesílání? 

  1. funkce mail() je zakázaná (zejména na free serverech)
  2. je špatně nastavený smtp server (v php.ini na win-serverech)
  3. nebo prostě blbne mail démon nebo je přetížená síť

Kombinace formulářů, databáze a pošty

Většině velkých internetových aplikací stačí ke štěstí formuláře, databáze a pošta. Například internetové noviny: 

  1. Články se vkládají přes formuláře do databáze. Většinou mají autoři dána svá hesla. PHP se jednoduše podívá, zda heslo odpovídá, pak nechá autora článek vložit. 
  2. Hlavní stránka generuje výstupy z databáze. Do ní se dají (do dalších tabulek) vkládat též komentáře (opět pomocí formulářů). 
  3. Prohledávání, třídění a aktualizaci článků lze dělat pomocí jednoduchých SQL příkazů, zabudovaných do jednoduchých PHP skriptů, všechno může být zaheslováno.
  4. Čtenáři si mohou pomocí formuláře objednat zasílání novinek do pošty. PHP odešle napřed potvrzovací mail s odkazem na php skript, který objednávku potvrdí. Mail se zapíše do databáze.
    Jednou za čas se to spustí odesílání novinek, které vygeneruje databáze a pošle všem registrovaným do mailu. 

A tak dále, možnosti jsou téměř neomezené. Podobně to chodí v internetových katalozích a obchodech.

A další...

Bez nadsázky se dá říci, že že PHP umí, na co si vzpomenete. (Leda za vás nikdy nebude myslet.) Musím ještě zmínit

Pokud byste se chtěli psaní PHP věnovat vážně, pořiďte si knihu PHP od Jiřího Koska. Je skvělá, je v ní skoro všechno a funguje to.

ASP -- varianta k PHP

Všechny výhody PHP, které jsem popsal na této stránce, by se daly přičíst i jazyku ASP - Active Server Pages od Microsoftu. Umí skoro totéž co PHP, ale má horší přenositelnost mezi platformami (zjednodušeně řečeno funguje pouze na Win-serverech, kterých je menšina).

Předchozí: Jak začít s PHP, zejména instalace
Vizte též: Programování stránek

Píše Yuhů
dusan@pc-slany.cz
mail formulářem
Jak psát web O tvorbě, údržbě a zlepšování internetových stránek.

Základy HTML CSS FrontPage Hledání

Obsah

Hlavní stránka

Novinky

FAQ

Download

Zdroje

Hledání


Rozšířené

Základní kurs

Jak udělat stránku

Základy HTML

Publikování

Zásady psaní

Editory

Různé prohlížeče

Editory

FrontPage 2000

FP Editor 98

Word 97

FrontPage Express

HTML tipy

Příprava obrázků

Obrázky

Pozadí

Odkazy

Vychytávky odkazů

Záložky

Aktivní mail

Tabulky

Úprava tabulek

Novinky tabulek

Design tabulkami

Rámy

Formátování rámů

Rámy nepoužívat

Iframe

Formuláře

Formuláře v HTML

Dokonalé formuláře

Zápis barev

Definice

Formátovací chyby

Jak udělat levé menu

Vytěžování stránek

Provoz webu

Rychlost stránek

Vzdálené služby

Vyhledávače

Katalogy

Správa souborů

Ikona stránky

Obsah / forma

Čeština

Chyby češtiny

Tabulky kódování

Meta tagy

Nastavení serveru

Programování stránek

Začátky PHP

Možnosti PHP

Používání prohlížeče

CSS styly

CSS styly

Úvod do CSS

Struktura textu

CSS prakticky

PŘEHLED VLASTNOSTÍ CSS

Složitější deklarace

Délkové jednotky

Pozicování

Sloupce pozicováním

Okraje objektů

Odlišení prohlížečů

Omezení CSS

Odlišný tisk

Dynamické HTML

Filtry

Příklady filtrů

Různé barvy odkazů

Barva rolovací lišty

 


Jak psát web: http://dusan.pc-slany.cz/internet/

Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz

Poslední aktualizace 15.12.2001