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í <?php 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 <?php , vloží PHP kód, uzavře to znaky ?> a je hotovo.

Příklad

<body>
<p>Úplně normální text 
<?php 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 vzdáleně 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.

PHP bylo navrženo primárně na to, aby se s ním dobře zpracovával vstup parametrů z URL a HTML formulářů.

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 obsah jiného souboru. PHP to umí. Na dané místo se napíše 

<?php 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.

(Kdo nechce používat PHP, musí zkusit jinou metodu, kterou popisuju v návodu o skládání stránek z kousků.)

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 většinou 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, uvádí 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>
<?php
$spojeni = mysqli_connect(localhost,"jmeno","heslo","noviny" );
$vysledek = mysqli_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 = mysqli_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.

Příklad, který uvádím, používá mysqli funkce. Ty jsou už v PHP 7 nedoporučené. Myslíte-li to s PHP a databázemi vážně, nastudujte si PDO nebo jiné knihovny, které zavádějí vyšší míru abstrakce. Třeba dibi od Davida Grudla.

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 Adminer (dříve jsem používal místo Adminera PHPMyAdmin). 

Adminer

Adminer je PHP skript, který si najdete, jednoduše překopírujete k sobě na server (lokální nebo ostrý), a nakonfigurujete mu připojení k databázi. Je

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>
<?php 
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. nejčastěji není dobře nastavený odesílající server, nebo je nastavený tak nedostatečně, že zprávy padají rovnou do spamu.

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 v době prvního psaní tohoto článku všechno fungovalo. Teď po mnoha letech už s novými verzemi PHP většina věcí nefunguje, ale principy programování v PHP jsou tam popsány výborně.

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
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.