Možnosti PHP

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

Snadný zápis PHP - 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

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. Výsledek příkladu po zpracování serverem:

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

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

Zpracování formulářů

Návod a příklady jsem přenesl na stránku Zpracování hodnot z formuláře 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 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, PostgreSQL, 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. 

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 relativně jednoduchý a standardní. Příkazy SQL se píší jako parametry určitých PHP funkcí. Pak už vlastně kód 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:

Tabulka clanky
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 T-mobile Jaká kritéria u mě vedla při výběru operátora? Protože T-mobile inzeruje v Respektu... Komunikace Yuhů 2001-11-30

Tato tabulka může být v praxi velmi velká. (Nebudu zde vysvětlovat, jak se tvoří.) 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), ale může teoreticky sídlit i jinde (např. na webzdarma se udává adresa mysql.webzdarma.cz). 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í. */


/* Cyklem procházím řádky výsledku a vytahuju z něj hodnoty do nového pole $zaznam*/
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. V příkladu vypadal takto:

select * from clanky order by datum

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, ale v konzoli (jak v konzoli vytvořit mysql databázi a tabulku) nebo přes PHPMyAdmin. 

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 email. 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 do databáze 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í (odkaz obvykle obsahuje nějaký neuhádnutelný řetězec). Emailová adresa se po potvrzení 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). S ASP pracuje méně lidí a mám pocit, že jsou i namyšlenější, takže se problémy v ASP nedají s nikým pořádně konzultovat.

 

Reklama

www.webhosting-c4.cz, webhosting s doménou v ceně. 20GB
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Encyklopedie FrontPage Reklama PHP Server

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.