PHP je programovací jazyk, který pracuje na straně serveru. S PHP můžete ukládat a měnit data webových stránek. PHP původně znamená Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. Aby váš počítač uměl zpracovávat PHP skripty, potřebujete na něm spustit webový server a nainstalovat PHP. Webový server můžete nainstalovat buď samostatně (například velmi oblíbený Apache), nebo využít některého instalačního balíku, které nejčastěji obsahují Apache, PHP a databázi MySQL, anebo si vystačit s Internetovou informační službou (IIS), která je součástí některých verzí Windows. PHP není nijak těžké pochopit a už se základy si lze vystačit. Umí ukládat, měnit a mazat data. Vše se odehrává na webovém serveru (kde jsou uloženy zdrojové kódy webových stránek). PHP skript se nejprve provede na serveru a potom odešle prohlížeči pouze výsledek (znamená to, že nejprve spočítá kolik je 300/30 a pak prohlížeči odešle jen číslo 10). Proto ve zdrojovém kódu najdete jen "10" (to je rozdíl oproti JavaScriptu, který počítá přímo v prohlížeči). Zdrojový kód PHP narozdíl od JavaScriptu a HTML nezobrazíte. Pomocí PHP je možné vytvořit diskuzní fórum, knihu návštěv, počítadlo, anketu, graf a dokonce si pomocí jednoduchého kódu můžete zlikvidovat celý obsah webu. Navíc máte možnost propojit vaše stránky s databázemi, např. MySQL. K práci budeme využívat souborového manažeru Unreal Commander alespoň si ho procvičíme nejprve najdeme na disku C: složku web a tu si otevřeme vytvoříme v ní nový soubor (Shift + F4) s příponou php, např. pozdrav.php Syntaxe Programovací kód jazyka PHP je na začátku a na konci ohraničený značkami: a? > (někdy PHP a ) každý řádek musí být zakončen středníkem příkaz echo vytiskne jeden nebo více řetězců
Př. Proměnné vyznačují se tím, že jejich jméno začíná znakem $ (pravý Alt+ů) hodnota se do proměnné uloží pomocí = nesmí začínat číslem je lepší psát bez diakritiky je-li proměnná ze dvou slov, je třeba spojit je podtržítkem ($prvni_cislo) záleží na velikosti písmen ($Jmeno $jmeno) je-li hodnota proměnné text, píšeme ji do uvozovek ($jmeno = Jana ), pokud je hodnotou číslo, píšeme bez uvozovek ($cislo = 12.5, místo des. čárky píšeme tečku) Spojování řetězce s proměnnou provádíme pomocí tečky
Jazyk PHP pracuje s operátory: + - * / Příkaz include - vkládání částí kódu / skriptů z externího souboru Možností využití "include" je spousta, ale pro tyhle případy je důležité: to, co se opakuje na dvou a více stránkách, napíšeme jen jednou, uložíme zvlášť do souboru, a do všech stránek, kde se to má zobrazit, jen dáme php příkaz include, který načte a na dané místo vloží obsah onoho souboru. Když pak obsah toho externího souboru změníme, samozřejmě se na všechny stránky bude načítat aktuální verze, tj. včetně změny. Tu tedy stačí udělat jen jednou. Př.
Další příklad vložení menu Mají-li webové stránky stejnou hlavičku a stejné menu, je výhodné vkládat tyto části do stránky pomocí příkazu include. Zdrojový kód stránka pak vypadá např. <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="pspad editor, www.pspad.com"> <title></title> </head> <body> include "hlavicka.php"; include "menu.html"; <div id="stred"> </div> </body> </html> Každou změnu pak provedeme pouze jednou, ve vkládaném souboru.
Ještě pár poznámek ke kaskádovým stylům: aby byla stránka na monitoru umístěna na střed, je dobré ji celou umístit do obalu, v souboru s kaskádovými styly se zapíše #obalovaci {margin: 0px auto; position: relative; width:1000px;} a souboru.html nebo.php <body> <div id="obalovaci"> include "hlavicka.php"; <div id="obsah"> include "menu.html"; </div> </div> </body> </html> aby nedocházelo k různým zobrazením stránky při použití vlastnosti padding, lze použít zdvojený objekt (např. hlavička); jsou soustředné a tvoří přirozený okraj, který se nerozhodí zápis v.css #hlavicka{position: absolute; top: 30px; left: 30px; width: 930px; height: 200px; background-color: rgb(255,255,153); border: thin rgb(102,51,0) solid } #hlavicka_in{position: absolute; top: 20px; left: 20px; width: 890px; height: 160px; background-color: rgb(255,255,153); zdrojový kód v.html <body> <div id="hlavicka"> <div id="hlavicka_in"> <h1>stránky s PHP</h1> </div> <img src="parada.png" align="right" border="0" height="113" width="153"> </div> </body> Pro lepší představu je zde zvýrazněn i okraj u hlavičky_in
Hlavička v konečné podobě Přihlášení uživatelským jménem a heslem zdrojový kód v.html <html> <body bgcolor="orange"> <form action="uzivatel.php" method="post"> Uživatel<br> <input type="text" name="jmeno" value="napiš jméno"><br> Heslo<br> <input type="password" name="heslo"> <br><br> <input type="submit" value="přihlásit"> </form> </body> </html> Soubor.php, který zpracuje přihlašovací formulář a otevře stránku pokus2.php $spravne_jmeno="ivana"; $spravne_heslo="matylda"; If ($_POST["jmeno"]==$spravne_jmeno and $_POST["heslo"]==$spravne_heslo) Header ("Location:pokus2.php")
Formulář a jeho vyhodnocení formular.html <h1>dotazník</h1> <form action="zpracuje.php" method="get"> Napiš svoji přezdívku:<br> <input type="text" name="jmeno" maxlength="10"><br><br> Vyber třídu do které chodíš:<br> <select name="trida" > <option value="prima">prima</option> <option value="sekunda">sekunda</option> <option value="tercie">tercie</option> <option value="kvarta">kvarta</option> <option value="kvinta">kvinta</option> <option value="sexta">sexta</option> <option value="septima">septima</option> <option value="oktava">oktáva</option> </select><br> <br>předmět Informační technologie:<br> <input type="radio" name="it" value="nesnáším">nesnáším<br> <input type="radio" name="it" value="vydržím"> vydržím to<br> <input type="radio" name="it" value="mám rád">mám rád<br> zpracuje.php $jmeno=$_get["jmeno"]; $trida=$_get["trida"]; $it=$_get["it"]; echo "Moje prezdivka je je $jmeno"."<br>" ; echo " Chodím do třídy $trida"."<br>" ; echo "Informační technologie $it "."<br>" ; Formulář a jeho vyhodnocení dokončení formular.html <h1>dotazník</h1> <form action="zpracuje.php" method="get"> Napiš svoji přezdívku:<br> <input type="text" name="jmeno" maxlength="10"><br><br> Vyber třídu do které chodíš:<br> <select name="trida" > <option value="prima">prima</option> <option value="sekunda">sekunda</option> <option value="tercie">tercie</option> <option value="kvarta">kvarta</option> <option value="kvinta">kvinta</option>
<option value="sexta">sexta</option> <option value="septima">septima</option> <option value="oktava">oktáva</option> </select><br> <br>předmět Informační technologie:<br> <input type="radio" name="it" value="nesnáším">nesnáším<br> <input type="radio" name="it" value="vydržím"> vydržím to<br> <input type="radio" name="it" value="mám rád">mám rád<br> <br> V IT mne baví:<br> <input type="checkbox" name="bavi1" value="webové stránky" >webové stránky<br> <input type="checkbox" name="bavi2" value="programování">programování<br> <input type="checkbox" name="bavi3" value="grafika">grafika<br> <input type="checkbox" name="bavi4" value="zpracování textu">zpracování textu<br> <input type="checkbox" name="bavi5" value="prezentace">prezentace<br> <input type="checkbox" name="bavi6" value="databáze">databáze<br> <input type="checkbox" name="bavi7" value="audio, video">audio, video<br> <input type="checkbox" name="bavi8" value="tabulky">tabulky<br><br> Co by jsi zlepšil v IT:<br> <textarea name="vzkaz" rows="10" cols="40"> </textarea> <br><br> <input type="submit" value="odeslat"> </form> zpracuje.php $jmeno=$_get["jmeno"]; $trida=$_get["trida"]; $it=$_get["it"]; $bavi1=$_get["bavi1"]; $bavi2=$_get["bavi2"]; $bavi3=$_get["bavi3"]; $bavi4=$_get["bavi4"]; $bavi5=$_get["bavi5"]; $bavi6=$_get["bavi6"]; $bavi7=$_get["bavi7"]; $bavi8=$_get["bavi8"]; $text=$_get["vzkaz"]; echo "Moje prezdivka je je $jmeno"."<br>" ; echo " Chodím do třídy $trida"."<br>" ; echo "Informační technologie $it "."<br>" ; echo "V IT nme baví $bavi1 $bavi2 $bavi3 $bavi4 $bavi5 $bavi6 $bavi7 $bavi8 "."<br>" ; echo "V IT bych ještě doporučil: "."<br>". $text ;
Funkce pro práci s datem a časem Funkce time vrací aktuální časové razítko - počet sekund od 1. 1. 1970 00:00:00 Funkce date formátuje místní datum a čas Seznam parametrů pro funkci date (vytvořil Slávek Müller)
Funkce mktime vrací unixové časové razítko k zadanému datu a času (tj. počet sekund, které uplynuly od 1. 1. 1970 k určenému datu a času). datum.php $hodina=mktime(14,0,0,2,23,2011); $jeste= $hodina-time(); $dend= mktime(0,0,0,6,30,2011); $zbyva=floor(($dend - time())/(60*60*24)); echo time(). "<br>"; echo date("d.m.y"). "<br>"; echo date("l"). "<br>"; echo mktime(14,0,0,2,23,2011). "<br>"; //hodina,minuta,sekunda,měsíc,den,rok echo "Do konce vyučování zbývá ". floor($jeste/60). " minut<br>"; //funkce floor zaokrouhlí hodnotu dolů na celá čísla echo "Do konce roku zbývá ". $zbyva. " dní<br>";
Větvení v PHP Větvení je skupina příkazů, které rozhodují (porovnávají proměnné) a určují, jak se bude skript dál vyvíjet. Jsou to příkazy typu if, else, elseif a switch. Porovnávací operátory $a==$b $a má stejnou hodnotu jako $b $a!=$b $a má jinou hodnotu než $b $a>$b $a je větší než $b $a<$b $a je menší než $b V příkladu jsme procvičili větvení a funkce pro práci s daty data.php $den="pátek"; if ($den=="středa") echo "Dnes je středa"; else echo "Dnes je $den"; echo "<br><br>"; $cislo=0; if ($cislo>0) echo "Číslo $cislo je kladné"; elseif ($cislo<0) echo "Číslo $cislo je záporné"; else echo "Číslo je nula"; echo "<br><br>"; echo "Je právě ".date("g"). " hodin ".date("i")." minut " ; $minuty=(date("g")*60+date("i")); echo "<br><br>"; echo $minuty; echo "<br><br>"; if ($minuty<570) echo "Dobré ráno"; elseif ($minuty<690) echo "Pěkné dopoledne"; elseif ($minuty<750) echo "Dobrou chuť"; elseif ($minuty<1050) echo "Hezké odpoledne"; else echo "Příjemný večer";
Cykly v PHP Cykly se používají, chceme-li opakovat určitou činnost, několikráte za sebou, opakovaně provádět stejnou proceduru. Postupně ověřovat data, nebo generovat informace. V programování rozeznáváme tři typy cyklů: 1. cyklus s podmínkou na konci 2. cyklus s podmínkou na začátku 3. cyklus s předem daným počtem opakování //cyklus s podmínkou na konci $x=1; do { echo($x. " "); $x=$x+1; } while ($x<25); //$x++ je totéž jak $x=$x+1 echo "<br>"; //cyklus s podmínkou na začátku $x=1; while ($x<25){ echo($x. " "); $x++; } echo "<br>"; //cyklus s daným počtem opakování for ($x=1; $x<=30;$x++){ echo($x. " "); }
Datové typy v PHP Integer Double String Array Object celé číslo desetinné číslo znakový řetězec pole objekt O typy proměnných se většinou nemusíme starat, protože se podle potřeby automaticky konvertují na vhodný typ. Pole Pole je speciální datová struktura, ve které jedna proměnná může obsahovat několik hodnot. Tyto hodnoty jsou přístupné pomocí indexu. Index prvku pole se zapisuje do hranatých závorek: $a[0]= Jana ; $a[1]= Ivoš; $a[2]= Manka ; Prvky pole nemusí mít stejný datový typ $x[0]=2; $x[1]=3.14; $x[2]="matěj"; Jiný způsob zápisu pole $b= array(8, 12, 6, 7, 10) Generování náhodného prvku funkce rand $nahodne = rand (1, 25); //vybere náhodné číslo z intervalu 1 25 Funkce count spočítá počet prvků v poli echo Pole má. count($b). prvků ; Vypsání prvků pole pomocí cyklu s daným počtem opakování $pole = array("jana", "Dáša", "Zdena", "Josef", "Pepe", "Lukáš"); for ($i=0; $i<count($pole);$i++){ echo($pole[$i]. ", "); }
Vypsání náhodného prvku z pole echo $pole[rand (0,Count($pole))]; Část kódu ze souboru murphy.php, který náhodně vygeneruje vždy jeden z tzv. Murphyho zákonů a zobrazí jej na webové stránce: Soubor je do stránky vložen pomocí funkce include: include "murphy.php" Vytvoření stránky s počítadlem přístupů na stránku, není ošetřeno více načtení z jednoho počítače, to znamená, že při každé aktualizaci se počítadlo zvýší <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>stránka s počítadlem</title> </head> <body> $file = "pocet.inc"; //soubor do kterého se to ukládá $open_file = fopen ($file,'r+'); //otevře soubor pro čtení a zápis $pocet = fread ($open_file, '100("file")') + 1; //přičte k $open_file 1 rewind ($open_file); //nastavení na začátek souboru fwrite ($open_file, $pocet); //zapíše do souboru aktuální počet přístupů fclose ($open_file); //zavře soubor <h1>stránka s počítadlem</h1> <p>jste include $file;. návštěvník této stránky</p><br><br> Vložení data, kdy byla stránka naposledy aktualizována Poslední aktualizace stránky proběhla echo(strftime("%d/%m/%y", getlastmod())); </body> </html>