1 Základy programování v PHP



Podobné dokumenty
Základy programování a algoritmizace

17 Základy algoritmizace a programování Algoritmus Možnosti zápisu algoritmů. Základy algoritmizace a programování

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Vstupní požadavky, doporučení a metodické pokyny

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Programování v jazyce JavaScript

PHP tutoriál (základy PHP snadno a rychle)

Programovací jazyk Pascal

K práci budeme využívat souborového manažeru Unreal Commander alespoň si ho procvičíme

Programování v jazyce JavaScript

Programování. Bc. Veronika Tomsová

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

Inovace bakalářského studijního oboru Aplikovaná chemie

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Algoritmizace a programování

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

HTML - Úvod. Zpracoval: Petr Lasák

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Vícerozměrná pole. Inicializace pole

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

6. Příkazy a řídící struktury v Javě

HTML Hypertext Markup Language

Maturitní otázky z předmětu PROGRAMOVÁNÍ

VISUAL BASIC. Práce se soubory

Stručný návod k programu Octave

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Tvorba webu. Úvod a základní principy. Martin Urza

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Střední odborná škola a Střední odborné učiliště, Hořovice

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

1 Webový server, instalace PHP a MySQL 13

Jazyk C# a platforma.net

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Úvod do programování. Lekce 1

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

PROGRAMOVÁNÍ V SHELLU

Řídicí struktury. alg3 1

Základy PHP. Josef Podstata. KTE/IZTT - Zpracování textu, tabulek a prezentací. Univerzita Palackého v Olomouci

Webové Aplikace (6. přednáška)

Algoritmizace a programování

Tabulkový procesor. Základní rysy

Zápis programu v jazyce C#

PHP a Large Objecty v PostgreSQL

WWW a HTML. Základní pojmy. Ivo Peterka

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

17. července :51 z moravec@yahoo.com

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Návrh a tvorba WWW stránek 1/38 PHP

Formátové specifikace formátovací řetězce

Návrh a tvorba WWW stránek 1/14. PHP a databáze

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

PSK3-9. Základy skriptování. Hlavička

Střední odborná škola a Střední odborné učiliště, Hořovice

6 Příkazy řízení toku

Regulární výrazy. Vzory

5 Přehled operátorů, příkazy, přetypování

24 Uživatelské výběry

Algoritmizace a programování

Tvorba webových stránek

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

1. Webový server, instalace PHP a MySQL 13

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Sekvenční a podmíněné provádění

Úvod do databázových systémů

PHP. 1. Úvod do PHP. 2. Základy PHP

Microsoft. Access. Nová databáze, návrh tabulky. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Ukázka knihy z internetového knihkupectví

Co je HTML. 1. Párový tag má začátek a konec: 2. Nepárový tag nemá ukončovací značku:

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Střední odborná škola a Střední odborné učiliště, Hořovice

Postupy práce se šablonami IS MPP

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Kurz LSL skriptování. Shiny Iceberg 2009

C2110 Operační systém UNIX a základy programování

Algoritmizace a programování

První kapitola úvod do problematiky

Průvodce instalací modulu Offline VetShop verze 3.4

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Základy HTML. Autor: Palito

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Transkript:

1 Základy programování v PHP Programovací jazyk PHP (Hypertext preprocessor) je skriptovací jazyk, který běží na straně serveru. Server posílá do vašeho počítače pouze výsledky. Používá se pro tvorbu webových aplikací dynamických stránek. Je postaven na základech jazyka C. Skriptovací jazyk PHP je neustále velmi rychle vyvíjen. Je to nejčastěji používaný modul na internetových serverech. Výhody jazyka PHP: PHP je jazyk, který je relativně jednoduchý na pochopení PHP má syntaxi velmi podobnou jazyku C a je tedy většině vývojářů dost blízký PHP podporuje širokou řadu souvisejících technologií, formátů a standardů Je to otevřený projekt s rozsáhlou podporou komunity Dá se najít velké množství již hotového kódu k okamžitému použití nebo funkční PHP aplikace Podstatná část z hotového kódu je šířena pod nějakou svobodnou licencí a dá se použít ve vlastních projektech PHP si dobře rozumí s webovým serverem Apache i IIS PHP snadno komunikuje s databázemi, jako je MySQL, PostgreSQL atd. PHP je multiplatformní a lze jej provozovat s většinou webových serverů a na většině dnes existujících operačních systémů PHP podporuje mnoho existujících poskytovatelů webhostingových služeb Nevýhody jazyka PHP: PHP je interpretovaný, ne kompilovaný jazyk Interpretovaný jazyk je překládán až za běhu programu. Je pomalejší, ale nemá tak velké formální požadavky. Překládají se interpretrem, ten instrukce zároveň při překladu provádí a to vše na straně serveru. Kompilovaný jazyk je nejdříve celý přeložen a až potom může být spuštěn. Je rychlejší než jazyk interpretovaný, má však vyšší nároky na formální správnost kódu. Překládá se kompilátorem, výsledkem překladu je (většinou).exe soubor. Kdokoli má přímý přístup k serveru, může nahlédnout do vašich PHP skriptů Podpora objektového programování není v PHP na moc dobré úrovni. Protože je PHP aktivně vyvíjen, v budoucích verzích jazyka se mohou některé funkce změnit nebo se mohou chovat jinak než dosud. Mezi nejčastější aplikace psané v PHP patří například: - diskusní fóra - chaty - internetové obchody - informační systémy - redakční systémy -firemní prezentace - dynamické osobní stránky - vyhledávače a katalogy 1

- drobnosti typu počitadla, ankety a mnoho dalších 1.1 Princip PHP PHP skriptovací jazyk, který běží na serveru. Typický PHP skript obsahuje jednak kusy normálního HTML (XHTML) kódu, a jednak kusy programového kódu PHP. Když webový server obdrží požadavek na zpracování takového skriptu, všechny kusy HTML kódu přeskočí a zpracuje pouze PHP programový kód. Výsledky ze zpracování programového kódu vloží do HTML kódu. Všechny příklady musí být pro svou funkčnost vloženy na internetový server. Příklad: Kód bez PHP //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" /> <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> <body> <p>stránka bez PHP. Nevím kolik je hodin.</p> </body> </html> U prvního řádku vložte před značku xml dvě lomítka. Tím zajistíte, že se tento řádek nebude zpracovávat v interpreteru PHP. Použitá sekvence znaků značí začátek xml kódu, ale také to může být začátek PHP kódu. Dvě lomítka pro PHP znamenají poznámku a tento řádek přeskočí. 2

Pokud si zobrazíte v prohlížeči zdrojový kód stránky (pomocí pravého tlačítka myši a volby zobrazit zdrojový kód), uvidíte, co přesně do vašeho prohlížeče server poslal. Kód s PHP //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" /> <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> <body> <p>stránka s PHP. Vím, že právě je echo Date("G:i") hodin.</p> </body> </html> Při kontrole poslaného kódu serverem, si všimněte, že server z PHP příkazu vložil do HTML pouze výsledek 13:26. Prohlížeč nemá sebemenší tušení, co všechno se na serveru dělo než mu byl výstup odeslán, vidí jen samotný výsledek. Části PHP kódu se do skriptů vkládají pomocí speciálních značek: a nebo php a Celý soubor může být jeden dlouhý PHP kód. Pak začíná a končí znaky a. V souboru může být kód PHP jen na jednom určitém místě nebo na více místech. V souboru také žádný PHP kód 3

být nemusí. Může se tvářit jako php skript, ale ve skutečnosti je to normální HTML soubor a PHP kód v něm vůbec není. Při uložení PHP souboru musí mít soubor příponu php (nebo další povolené přípony na serveru). Každý programový řádek (ukončená funkce) musí končit znakem středník (;). Programový kód můžete psát v libovolném editoru bez formátování. Naprosto nevhodný je například Word. Jeden z nejlepších programů je český program PSPad (neplacený). Je to program pro tvorbu souborů v různých formátech. Výhody použití programu PSPad: Pomocí protokolu FTP možnost práce přímo na internetovém serveru Velmi jednoduchá a intuitivní práce Neomezená délka editovaného textu Možnost otevření více dokumentů současně Záznam maker s možností uložení na disk a ruční editace Práce s projekty Hledání a nahrazování v souborech Nalezení rozdílů v textových souborech (porovnání verzí) Zvýraznění syntaxe Automatické rozpoznání syntaxe podle typu souboru s možností manuální změny Volitelné zobrazení čísel řádků, podbarvení aktuálního řádku, pravítko Převody velikosti písmen (malá, velká, první písmena velká) Program velice dobře zvýrazňuje syntaxi různých jazyků. Po spuštění si nastavte syntaxi pro PHP. Pokud vytvořený PHP soubor uložíte na lokální a potřebujete vyzkoušet jeho funkčnost, musíte ho nahrát na internetový server. To můžete provést například pomocí programu Total Commander. Postup: 1. Spusťte Total Commander 2. Zvolte ikonu FTP 3. Zvolte tlačítko Nové připojení 4. Zadejte Relaci (soscb) 5. Zadejte hostitele (soscb.cz) 4

6. Zatrhněte funkci Použít pasivní režim 7. Zadejte OK a pak Připojit 8. Po odeslání zadejte přístupové jméno 9. Zadejte přístupové heslo 10. Soubory se nakopírujte do vašeho adresáře 11. Spusťte php skript - např.: www.soscb.cz/vyuka/vaše jméno/pokus.php Další možností je nakonfigurovat si v lokálním počítači webový server Apache a podporu pro php. Zjištění funkčnosti PHP Pokud se vám zdá, že vaše programy nejsou funkční, je dobré nejdříve zkontrolovat, zda je na serveru nainstalován modul PHP. Vytvořte soubor s následující funkcí a uložte ho na server (nezapomeňte na příponu souboru - php): phpinfo (); Pokud je vše v pořádku a PHP je nainstalován, zobrazí se podrobný výpis nastavení PHP. Jak jste již četli, jednotlivé instrukce se oddělují středníkem. Pokud to neprovedeme, dojde k syntaktické chybě a systém zobrazí v prohlížeči: Výhodou je, že nám systém oznámí, na kterém řádku se uvedená chyba vyskytuje. Dejte pozor, pokud je funkce na více řádcích, může být chyba nad uvedeným řádkem. Špatně echo "První řádek" echo "Druhý řádek" Správně: echo "První řádek" ; echo "Druhý řádek" ; 5

1.2 Komentáře Pokud píšete delší program, používejte v programovém kódu komentáře. Tím zajistíte, že se v kódu vyznáte i po několika měsících či letech. Komentář je něco, co program při zpracování ignoruje a slouží tedy pouze uživateli. Komentáře mohou být v PHP jednořádkové nebo víceřádkové. // - (dvě dopředná lomítka) jednořádkový komentář # - (mřížka) jednořádkový komentář dvojice /* a */ (lomítko+hvězdička a hvězdička+lomítko) víceřádkový kometář // skriptu je jedno, co tady napíšu # skriptu je úplně jedno, co tu bude /* Nevím, jestli to, co napsáno v tomto skriptu bude fungovat. Ještě se na to budu muset podívat. */ Víceřádkovým komentářem můžete zakomentovat celý blok textu velice rychle, a také velice špatně. Pamatujte, že víceřádkové komentáře nelze vnořovat. První sekvence */ totiž celý komentář ukončí. Následující kód tedy skončí chybou: /* Chci to zakomentovat. To by přece nemělo vadit. /* Ale díky "vnořenému" víceřádkovému komentáři... už to vadí */ */ 1.3 Příkaz echo Příkaz echo vytiskne jeden nebo více řetězců. echo "Dnes svítí sluníčko"; echo "Dnes svítí sluníčko ", "Zítra bude pršet ", "Pozítří bude oblačno"; 6

Víceřádkový řetězec Budete-li chtít vytisknout víceřádkový řetězec, můžete provést něco jako: echo "Tohle bude první řádek Tohle bude druhý řádek Tohle bude třetí řádek" Rovnocenný zápis bude i zápis s tzv. speciální sekvencí znaků \n. echo "Tohle bude první řádek\ntohle bude druhý řádek\ntohle bude třetí řádek" \n je jednou z tzv. escape sekvencí. 1.4 Escape sekvence Pomocí speciálních zápisů můžeme zobrazit znaky, které by jinak PHP zpracoval jako součást příkazu. Sekvence Význam \n Nový řádek \" Uvozovky \r Přechod na začátek řádku \t Tabelátor \\ Zpětné lomítko \$ Dolar Takže, budete-li chtít donutit příkaz echo, aby ve výstupu zobrazil skutečnou uvozovku, můžete napsat něco jako: echo "PHP už \"běžně\" programuji" ; Pokud jste si zkoušeli uvedený příklad s řádky a máte pocit, že tam cosi nehraje, máte pravdu. V prohlížeči totiž budou všechny údaje na jednom řádku. Musíte si uvědomit, jak prohlížeč předané informace zobrazuje. Když pošlete prohlížeči požadavek na skript uvedený výše a necháte si zobrazit zdrojový kód stránky která dorazí, zjistíte, že tam ty konce řádku opravdu jsou. HTML ale nezalamuje řádek tehdy, když je znak konce řádku v kódu, HTML má k tomu značku <br />. Je samozřejmě možné vložit značku HTML do řetězce v PHP, třeba takto: echo "Tohle bude první řádek<br />Tohle bude druhý řádek<br />Tohle bude třetí řádek" ; 7

Prohlížeč obdrží následující kód: Tohle bude první řádek<br />Tohle bude druhý řádek<br />Tohle bude třetí řádek" ; Pokud budete chtít být bezchybní a mít validní kód, můžete napsat kód i takto: echo "Tohle bude první řádek<br />\ntohle bude druhý řádek<br />\ntohle bude třetí řádek" ; Prohlížeč obdrží následující kód: Tohle bude první řádek<br /> Tohle bude druhý řádek<br /> Tohle bude třetí řádek" ; 1.5 Spojování řetězců Spojování řetězců se prování pomocí operátoru. (tečka). echo "Klidně si spojím jméno "."s příjmením"; Tečka zde vede ke spojení, zřetězení řetězců. Je rovněž možné spojit více než dva řetězce. 1.6 Proměnné v PHP Každý programovací jazyk pracuje s nějakými hodnotami. To, do čeho se tyto hodnoty ukládají, se nazývá proměnné. Každá proměnná má: - název (někdy se mu říká identifikátor) - hodnotu (někdy se označuje termínem literál) V každém okamžiku je hodnota proměnné v programu jednoznačně daná, během programu se však může měnit Typy proměnných Typ Název v PHP Popis Logický typ Boolean Uchovává hodnotu "pravda" nebo "nepravda". Zapisuje se jako TRUE a FALSE Celočíselný typ Integer Uchovává celá kladná i záporná čísla (a nulu) (-2 bilióny až + 2 bilióny) 8

Desetinné číslo Float nebo Real Uchovává desetinná čísla s přesností obyčejně na 14 desetinných míst (velikost čísla má 308 nul). Řetězec String Uchovává texty neboli řetězce. Řetězec je znak nebo sada znaků, v PHP prakticky neomezené délky. - Každá proměnná musí mít jednoznačný název. Ten v PHP začíná znakem dolaru ($) a následuje (bez mezery) nějakým pojmenováním. - První znak toho pojmenování musí být buď písmeno a-z nebo podtržítko. Nesmí to být číslo ani nic jiného. - Názvy proměnných v PHP rozlišují mezi malými a velkými písmeny, takže pozor na to. Praxe bývá většinou taková, že se proměnné píší malými písmeny. - Desetinná čísla se zadávají s tečkou, ne s čárkou. - Řetězce se uzavírají do uvozovek nebo do apostrofů. Ukázky proměnných //logický typ $mam_malo_penez = TRUE; //celočíselný typ $plat = 10000; //desetinné číslo $disketa = 3.5; //řetězec $prohlaseni = "Příští měsíc budou prázdniny." ; //Proměnné vypíšete opět příkazem echo. echo $mam_malo_penez."<br />"; echo $plat."<br />"; echo $disketa."<br />"; echo $prohlaseni."<br />"; Běžné chyby v proměnných // tohle bude špatně. Proměnná nesmí začínat číslem $3sestry = "tři sestry" ; // tohle sice projde, ale nic to nevypíše (velikost písmen v názvu) $rok = 2004; echo $Rok; 9

1.7 Operátory Operátor se používá k zjištění hodnoty pomocí provedení procedury. OPERÁTOR OPERACE PŘÍKLAD POPIS + Sčítání 1 + 2 součet 1 a 2 = 3 - Odečítání 2 1 rozdíl 2 a 1 = 1 * Násobení 2 * 1 součin 2 a 1 = 2 / dělení 3 / 2 podíl 3 a 2 = 1.5 % zbytek (modulo) 3 % 2 počítá zbytek celočíselného dělení = 1 == Rovnost $a == $b $a a $b mají stejnou hodnotu < Menší $a < $b $a je menší než $b > Větší $a > $b $a je větší než $b <= menší nebo rovno $a <= $b $a je menší nebo rovno $b => větší nebo rovno $a => $b $a je větší nebo rovno $b!= Nerovnost $a!= $b $a se nerovná $b <> Nerovnost $a <> $b $a se nerovná $b 1.8 Proměnná typu Pole V PHP je kromě základních datových typů (celá čísla, desetinná čísla, logické hodnoty a řetězce) k dispozici i datový typ pole. To je speciální struktura, která může v jedné proměnné obsahovat sadu hodnot. Pole má prvky; každý prvek má index nebo klíč a hodnotu. Definice pole $jmeno[1]="petr"; $jmeno[2]="pavel"; $jmeno[3]="maruška" ; $jmeno[4]="eva"; $jmeno[5]="roman"; Tímto zápisem vznikne proměnná $jmeno (pole), která obsahuje pět prvků, z nichž každý má svůj index (například trojku) a hodnotu (Maruška). Z toho vidíte, že pole se v PHP zapisují jako každá jiná proměnná, pouze za názvem mají v hranatých závorkách index. Toto pole je indexované. Někdy může ale být šikovnější rozlišit od sebe prvky pole řetězcem, čímž vznikne tzv. asociativní pole. $pocet_lidi["praha"]=1000000; $pocet_lidi ["Ústí nad Labem"]=100000; $pocet_lidi ["Horní Lhota"] = 350; Obecně může být asociativní pole užitečné v případě, kdy budete chtít rozlišovat prvky podle něčeho jiného než podle čísel. 10

Index pole můžeme vynechat a PHP jej dosadí za nás. Také můžete zadat první hodnotu, od které se bude index odvíjet. Další možnost je použít v PHP funkci array, která provede totéž. $jmeno[]="petr"; $jmeno[]="pavel"; $jmeno[]="maruška" ; $jmeno[]="eva"; $jmeno[]="roman"; nebo pomocí funkce array, což je ještě kratší a je to naprosto rovnocenný zápis: $jmeno=array("petr", "Pavel", "Maruška", "Eva", "Roman"); Pamatujte, že PHP standardně čísluje pole od nuly, ne od jedničky. Aby příklad skutečně fungoval jako ten úvodní, musíte do prvního indexu zadat číslo 1. $jmeno[1]="petr"; $jmeno[]="pavel"; $jmeno[]="maruška" ; $jmeno[]="eva"; $jmeno[]="roman"; nebo $jmeno=array(1=>"petr", "Pavel", "Maruška", "Eva", "Roman"); Příklad: Z definovaného pole vypište první a poslední záznam $jmeno[]="petr"; $jmeno[]="pavel"; $jmeno[]="maruška" ; $jmeno[]="eva"; $jmeno[]="roman"; echo $fronta[0]; <br /> echo $fronta[4]; 11

1.9 Výrazy, konstanty Výrazem je v PHP cokoliv, co má nějakou hodnotu. Konstanta je v PHP něco jako proměnná, ale během programu svou hodnotu nemění. Konstanty se definují pomocí funkce define a zapisují se velkými písmeny. define ("BROWSER", "IE 9"); define ("OS", "Windows 7"); echo "Váš browser je ".BROWSER." a Váš systém je ".OS; 1.10 Inkrementace, dekrementace, postinkrementace, preinkrementace Inkrementace při inkrementaci se hodnota proměnné zvýší o 1. $a = 10; $b = ++$a; echo $b; Dekrementace při dekrementaci se sníží hodnota proměnné o 1. $a = 10; $b = --$a; echo $b; Postinkrementace $a = 10; $b = $a++; echo $a. "<br />"; echo $b; Při postinkrementaci se v tomto příkladu výraz $a++ nejdříve vyhodnotí, jeho hodnota se přiřadí proměnné b. Následně je inkrementována proměnná a. Proměnná a má hodnotu 11 a proměnná b má hodnotu 10. Preinkrementace $a = 10; $b =++ $a; echo $a. "<br />"; echo $b; 12

Při preinkrementaci se v tomto příkladu nejdříve inkrementuje proměnná a. Následně je výraz ++$a vyhodnocen - jeho hodnota přiřazena proměnné b. Proměnná a má hodnotu 11 a proměnná b má hodnotu 11. 1.11 Příkazy Příkazy jsou kostrou celého programu. Udělují programům základní schopnost rozhodování, která je zapotřebí pro většinu početních úloh. 1.11.1 Příkazy pro větvení programů Tyto příkazy rozhodují o tom jaký blok kódu se provede a za jakých podmínek. V PHP jsou dvě podmíněné konstrukce. První je if...elseif...else a druhá switch...case. Příkaz if // Jan se vypíše, jen pokud bude $jmeno Jan if ($jmeno == "Jan") echo ("Jan"); // Jméno a příjmení se vypíše pouze tehdy, pokud jméno bude Jan a příjmení Novák if ($jmeno == "Jan" AND $prijemni == "Novák") { echo ("Jan"); echo ("Novák"); PHP také umožňuje používat rozvětvené podmínky. Pomocí klíčového slova else můžete určit blok kódu, který se provede, pokud je daná podmínka nepravdivá. Také máte klíčové slovo elseif, který vám v případě nesplnění hlavní podmínky umožňuje testovat alternativní podmínky. //testuje se zadané číslo v proměnné $i $i=0; if ($i < 0) { echo ("Záporné"); elseif ($i == "0") { echo ("Nula"); else { echo ("Kladné"); 13

Příkaz switch Příkaz switch se používá, pokud testujeme jednu proměnnou s více možnými hodnotami. php //testuje se jaký řetězec je v proměnné $stat $stat="sk"; switch ($stat) { case "cz": echo "Česká republika"; break; case "sk": echo "Slovenská republika"; break; default: echo "Odjinud"; Příkaz switch porovnává hodnotu proměnné $stat s každou hodnotou klauzule case. Pokud nalezne odpovídající hodnotu, provede příkazy spojené s touto volbou až do příkazu break. 1.11.2 Cykly Cykly nám umožňují provádět určitou část kódu opakovaně až do nastaveného počtu nebo splnění podmínky. V PHP jsou dva typy cyklů. While - provede znovu daný kód jen v případě že je splněna daná podmínka. For tomuto cyklu dopředu zadáte, kolikrát má daný kód provést. Příkaz while Výpis čísel od 1 do 10 $i = 0; while ($i <= 9) { $i++; echo $i; Výpis čísel od 1 do 10 do tabulky <table> <tr><td>číslo</td></tr> $i=1; while ($i<=10) { echo "<tr><td>".$i."</td></tr>\n"; $i++; </table> 14

Nekonečné smyčky Při nepozornosti může vzniknout nekonečná smyčka program nikdy nebude mít konec. Na serveru bývá většinou zapnuta ochrana a program se po 30 sekundách násilně ukončí. V opačném případě by mohlo dojít k zahlcení serveru. $i=1; while ($i=1) $i++; echo $i; Příkaz for <table> <tr><td>číslo</td></tr> for ($i=1; $i<=10; $i++) echo "<tr><td>".$i."</td></tr>"; </table> Vnořené smyčky (malá násobilka) <table> for ($radek=1; $radek<=10; $radek++): echo "<tr>"; for ($sloupec=1; $sloupec<=10; $sloupec++): echo "<td>".$radek*$sloupec."</td>"; endfor; echo "</tr>"; endfor; </table> Příkazy break a continue Smyčky nemusejí probíhat vždy řádně celým cyklem. Někdy může být výhodné provádění cyklu přerušit. K tomu slouží příkaz break. break Úprava předchozího příkladu tak, aby vracel pouze čísla do padesáti. <table> for ($radek=1; $radek<=10; $radek++): echo "<tr>"; 15

echo "</tr>"; endfor; </table> Continue for ($sloupec=1; $sloupec<=10; $sloupec++): if ($radek * $sloupec>50) break; // to je ten přidaný řádek echo "<td>".$radek*$sloupec."</td>"; endfor; Úprava předchozího příkladu tak, aby vracel pouze čísla větší než padesát. <table> for ($radek=1; $radek<=10; $radek++): echo "<tr>"; for ($sloupec=1; $sloupec<=10; $sloupec++): if ($radek * $sloupec<50) continue; // to je ten přidaný řádek echo "<td>".$radek*$sloupec."</td>"; endfor; echo "</tr>"; endfor; </table> 1.11.3 Funkce (procedury) Funkce jsou v PHP nezbytným programovacím prostředkem. Procedury i funkce se v PHP definují klíčovým slovem function. Procedura Procedura je jednoduše řečeno kus kódu, který se může volat samostatně. Většinou se do procedury umisťují ty části kódu, které se v programu opakují nebo se procedury používají pro větší přehlednost. function tabulka() { <table> <tr><td>1</td><td>2</td></tr> <tr><td>3</td><td>4</td></tr> </table> 16

Použití procedury tabulka echo "Toto je první tabulka"; tabulka(); echo "Toto je druhá tabulka"; tabulka(); Funkce function dvaplusdva() { return 2+2; Výraz, který je uveden za return se vrátí jako výsledná hodnota a provádění funkce tím končí. cokoli, co je uvedeno jako příkaz za klíčovým slovem return už se neprovede. Funkce může mít více vstupních parametrů. Ty se pak oddělují čárkou. Funkce v PHP mohou být rekurzivní. To znamená, že funkce může volat sebe samu. Funkce nemůže vracet více než jeden výstupní parametr. Ale může vracet pole, takže se to dá obejít. Jedna uživatelská funkce může volat jinou. Na pořadí, v jakém jsou uvedeny ve skriptu, přitom nezáleží. 1.11.4 Vkládání souborů Funkce pro vkládání souborů použijete při vkládání částí kódu do webové stránky - záhlaví, zápatí, kontaktní informace, vložení počítadla, vložení často používaných částí kódu apod. Výhodou je úspora místa ne serveru a daleko snazší úprava určité funkce nebo části opakujícího se kódu. K tomuto účelu se používají příkazy require a include. Příkaz zadaný soubor vloží na místo, kde se tento příkaz nachází. require "soubor.php"; // požadovat require ("soubor.php"); // volání ve tvaru fce include "soubor.php"; // vložit include ("soubor.php"); // volání ve tvaru fce require - při neexistenci souboru se skript ukončí s fatální chybou include - při neexistenci souboru zahlásí varování a pokračuje dále U vkládaných souborů můžeme použít libovolnou příponu. Často se používá přípona.inc. Tím lze bezpečně poznat, že daný soubor je určen pro vložení do jiného souboru a ne pro přímé volání. Tento způsob znamená však velké bezpečnostní riziko. Soubory s příponou.inc nejsou zpracovány serverem, takže kdokoliv, kdo zná jeho jméno si může zobrazit celý text. Používejte standardní přípony pro php. 17

Ukázka webové stránky HTML tvořící webovou stránku <!-- začátek hlavičky --> //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" /> <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> <!-- konec hlavičky --> <!-- začátek úvodu --> <body> <div style="background-color: #FFFF00"> <h2 align="center">střední odborná škola veterinární a mechanizační a zahradnická<br />a Jazyková škola s právem státní jazykové zkoušky</h2> </div> <div><p>rudolfovská 92, 372 16 České Budějovice, telefon: 387 924 111, e-mail: <a href="mailto:skola@soscb.cz">skola@soscb.cz</a></p><br /><hr /> </div> <!-- konec úvodu --> <!-- začátek obsahu --> <p><b><a href="http://www.soscb.cz/mech.htm">obor: MECHANIZACE A SLUŽBY</a></b></p> <p><b><a href="http://www.soscb.cz/vet.htm">obor: VETERINÁŘSTVÍ</a></b> <p><b><a href="http://www.soscb.cz/zah.htm">obor: ZAHRADNICTVÍ</a></b> <!-- konec obsahu --> <!-- začátek patičky --> <p> </p><hr /><p><b>ič:</b> 60075911<br /><b>dič:</b> CZ60075911</p> </body> </html> <!-- konec patičky --> 18

PHP tvořící tu samou stránku jako v předchozí ukázce. K tomuto souboru náleží další tři soubory hlavicka_inc.php, uvod_inc.php a paticka_inc.php. include "hlavicka_inc.php"; include "uvod_inc.php"; <!-- konec úvodu --> <!-- začátek obsahu --> <p><b><a href="http://www.soscb.cz/mech.htm">obor: MECHANIZACE A SLUŽBY</a></b></p> <p><b><a href="http://www.soscb.cz/vet.htm">obor: VETERINÁŘSTVÍ</a></b> <p><b><a href="http://www.soscb.cz/zah.htm">obor: ZAHRADNICTVÍ</a></b> <!-- konec obsahu --> include "paticka_inc.php"; hlavicka_inc.php //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" /> <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> uvod_inc.php <body> <div style="background-color: #FFFF00"> <h2 align="center">střední odborná škola veterinární a mechanizační a zahradnická<br />a Jazyková škola s právem státní jazykové zkoušky</h2> </div> <div><p>rudolfovská 92, 372 16 České Budějovice, telefon: 387 924 111, e-mail: <a href="mailto:skola@soscb.cz">skola@soscb.cz</a></p><br /><hr /> </div> paticka_inc.php <p> </p><hr /><p><b>ič:</b> 60075911<br /><b>dič:</b> CZ60075911</p> </body> </html> 19

Práce se soubory Soubory se používají pro ukládání dat pro pozdější použití. Dalším a lepším způsobem jak ukládat data je použití databáze. Abychom mohli zapisovat do souboru, musíte: 1. Otevřít soubor - pokud neexistuje, tak ho vytvořit 2. Zapsat do souboru 3. Zavřít soubor Otevření souboru K otevření souboru použijete funkci - fopen(název_souboru, mód), Otevřený soubor musíme vždy uzavřít funkcí fclose (jméno proměnné, do které jste soubor otevřeli). $fp = fopen("text.txt", "w"); Módy: r čtení od začátku r+ čtení a zápis od začátku w zápis (pokud soubor existuje, smaže se jeho obsah) w+ zápis a čtení od začátku a doplňování (zápis) od konce a+ doplňování a čtení od konce Přečtení souboru readfile ("text.txt"); Pokud soubor nebude existovat, vydá varovné hlášení: Warning: readfile(text.txt) [function.readfile]: failed to open stream:... Čtení ze souboru po řádcích fgets() - přečte vždy jeden řádek, dokud nenarazí na znak nové řádky $fp = fopen ("text.txt", "r"); $cti = fgets ($fp, 100); echo $cti; fclose ($fp); //uzavření souboru Čtení ze souboru po řádcích - výpis všech řádků $fp = fopen ("text.txt", "r"); while ($fp) { $cti = fgets ($fp, 100); echo $cti; fclose ($fp); Tato konstrukce zahlásí chybu, protože jsme neurčili, kdy má čtení skončit. 20

Kdy zastavit čtení feof() - Vrátí true, pokud ukazatel ukazuje na konec souboru (File End OF File) $fp = fopen ("text.txt", "r"); while (!feof($fp)) { $cti = fgets ($fp, 100); echo $cti."<br />"; fclose ($fp); Zápis do souboru Zápis do souboru provedete příkazem fwrite. $fp = fopen ("text.txt", "a+"); fwrite ($fp, "Hedvika"."\n"); fclose ($fp); $fp = fopen ("text.txt", "r"); while (!feof($fp)) { $cti = fgets ($fp, 100); echo $cti."<br />"; fclose ($fp); Pohyb uvnitř souboru rewind() - nastaví pozici ukazatele na začátek souboru ftell() - oznámí, jak daleko se ukazatel dostal v souboru (v bytech) fseek() - nastaví ukazatel na libovolné místo v souboru (v bytech) Smazání souboru unlink() např.: unlink ("text.txt"); Primitivní počítadlo //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" /> <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> 21

<body> $file = fopen ("text.txt","r+"); $pocet = fgets ($file) + 1; rewind ($file); //nastavení na začátek souboru fwrite ($file, $pocet); fclose ($file); <h1>stránka s počítadlem</h1> <p>jste include ("text.txt");. návštěvník této stránky</p> </body> </html> Ověřování existence souboru if (file_exists ("text.txt")) echo "Soubor existuje - spouštím počítadlo"; else { echo "Soubor neexistuje - založím ho!"; $file = fopen ("text.txt","w"); fclose ($file); $file = fopen ("text.txt","r+"); $pocet = fgets ($file) + 1; rewind ($file); fwrite ($file, $pocet); fclose ($file); 1.11.5 Formátování řetězců Ořezávání řetězců chop() - ořízne prázdné znaky na konci ltrim() - ořízne prázdné znaky vlevo trim() - ořízne prázdné znaky na začátku a na konci $name=trim($name) Změna velikosti písmen strtoupper - všechna písmena velká strtolower - všechna písmena malá ucfirst - první písmeno v řetězci velké ucwords - první písmena všech slov velká $text = "ahoj pavle<br />"; echo strtoupper($text). "<br />"; 22

echo strtolower($text). "<br />"; echo ucfirst($text). "<br />"; echo ucwords($text); Funkce pro spojování a dělení řetězců implode(separátor, pole) - spojí řetězce daným separátorem explode(separátor, řetězec) - vytvoří pole, roztrháním řetězce dle daného separátoru substr(řetězec, začátek, konec) - umožní pomocí počátečního a koncového znaku získat podřetězec z řetězce implode Ukázka spojení dvou řetězců z pole $jmeno = Array("Roman", "Blábolil"); $celejmeno = implode (" ", $jmeno); echo $celejmeno; explode Ukázka oddělení jména od domény u e-mailové adresy $email = ("skola@sosvaz.cz"); $pole = explode ("@", $email); echo $pole[0]."<br />"; echo $pole[1]; Vyhledávání řetězců strstr(řetězec, hledaný řetězec) - vyhledá daný řetězec nebo znak stristr(řetězec, hledaný řetězec) - nerozlišuje velikost písmen 1.12 Regulární výrazy Regulární výrazy se používají k popsání vzoru uvnitř textu. Například řetězec "škola" odpovídá regulárnímu výrazu "škola", ale také "škol", "kol" apod. V regulárním výrazu můžete použít speciální znaky, které nám pomohou popsat vlastnosti hledaného výrazu. 23

^ označuje začátek řetězce ( ^abc vyhovuje každý řetězec začínající "abc") $ označuje konec řetězce (abc$ vyhovuje každý řetězec končící "abc", ^abc$ vyhovuje pouze řetězec "abc") "." zastupuje libovolný znak (^.luh$ vyhovují řetězce "pluh", "dluh") "*" označuje opakování předcházejícího znaku nula- a vícekrát (^ab*$ vyhovují řetězce "a", ab", abb", abbb") "+" označuje opakování předcházejícího znaku jednou- a vícekrát (^ab+$ vyhovují řetězce ab", abb", abbb", [a-z]+ nejméně jeden znak z povolených znaků) "?" označuje opakování předcházejícího znaku nula- nebo jedenkrát (^ab?$ vyhovují pouze řetězce "a", ab") "{2,4" označuje opakování předchozího znaku 2 až 4-krát (^ab{2-4$ vyhovují řetězce "abb", "abbb" a "abbbb") {2, označuje opakování předchozího znaku alespoň 2-krát [] zastupuje jeden znak ze seznamu v závorkách "^" na začátku seznamu znamená negaci (tedy závorky zastupují jeden znak, který není na seznamu) (^[^0-9] vyhovují řetězce nezačínající číslicí) " " má význam logického OR (^(b cd)ef$ vyhovují řetězce "bef" a "cdef") "()" kulaté závorky slouží k seskupení řetězce. Opakovací značky (*, +,?) se pak vztahují na celý obsah závorky, ne pouze na jeden znak. (^(abc)*$ vyhovují řetězce "", "abc", "abcabc", abcabcabc") "\." označuje znak ".", "\\" označuje znak "\" (\. Vyhovuje libovolný řetězec obsahující alespoň jednu tečku) Množiny a třídy znaků [a-z] - množina povolených znaků [aeiouy] - množina povolených znaků [a-za-z] - množina povolených znaků (velká i malá písmena) [^a-z] - množina nepovolených znaků 24