tvorba webovÝch strÁnek

134
Výukový modul TWS_04 Ing. Pavel Chmiel, Ph.D. UNIV 2 - KRAJE TVORBA WEBOVÝCH STRÁNEK TVORBA WEBOVÝCH STRÁNEK

Upload: dean

Post on 10-Jan-2016

50 views

Category:

Documents


2 download

DESCRIPTION

TVORBA WEBOVÝCH STRÁNEK. Výukový modul TWS_04Ing. Pavel Chmiel, Ph.D. UNIV 2 - KRAJE. Osnova výukového modulu TWS_04. Jazyk PHP – význam, syntaxe, WAMP server, spouštění skriptů Příkaz ECHO Proměnné a konstanty v PHP, matematické operace Příkazy pro větvení a tvorbu cyklů - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: TVORBA WEBOVÝCH STRÁNEK

Výukový modul TWS_04 Ing. Pavel Chmiel, Ph.D. UNIV 2 - KRAJE

TVORBA WEBOVÝCH STRÁNEKTVORBA WEBOVÝCH STRÁNEK

Page 2: TVORBA WEBOVÝCH STRÁNEK

Osnova výukového modulu TWS_04Osnova výukového modulu TWS_04

1. Jazyk PHP – význam, syntaxe, WAMP server, spouštění skriptů

2. Příkaz ECHO

3. Proměnné a konstanty v PHP, matematické operace

4. Příkazy pro větvení a tvorbu cyklů

5. Příkazy pro vkládání obsahu souborů (include, require)

6. Funkce v PHP (uživatelské, předdefinované)

7. Databáze – základní pojmy, výběr databázového systému

8. Databázový systém MySQL, správa databáze, jazyk SQL

9. PHP funkce pro práci s databázovým systémem MySQL

Page 3: TVORBA WEBOVÝCH STRÁNEK

Jazyk PHPJazyk PHP

PHP je skriptovací jazyk vykonávaný na straně webového serveru.

PHP skripty se vkládají přímo do kódu webové stránky (uzavřen ve

speciálním párovém tagu).

Na straně webového serveru se nejprve vykonají (interpretují)

všechny PHP příkazy a funkce, poté se prohlížeči pošle upravená

webová stránka obsahující pouze HTML/CSS kód.

Page 4: TVORBA WEBOVÝCH STRÁNEK

Jazyk PHPJazyk PHP

Server hostující dynamické webové stránky musí obsahovat:

Aplikaci webového serveru (např. Apache)

PHP engine - interpretr PHP skriptů

Databázový systém (např. MySQL)

Při vývoji (tvorbě) webových stránek je vhodné mít tyto aplikace

nainstalovány na lokálním počítači (localhost).

Výhoda:

- rychlost při testování,

- není nutné připojení k internetu,

- možnost upravit si konfiguraci přesně dle vlastních požadavků.

Page 5: TVORBA WEBOVÝCH STRÁNEK

WAMP serverWAMP server

WAMP server je balík nakonfigurovaných aplikací pro vývoj dynamických

webových stránek, obsahující:

webový server APACHE

interpretr jazyka PHP

databázový systém MySQL

webový nástroj pro správu databáze phpMyAdmin

WAMP server je zdarma ke stažení: www.wampserver.com

Page 6: TVORBA WEBOVÝCH STRÁNEK

Základní vlastnosti jazyka PHPZákladní vlastnosti jazyka PHP

zpracování údajů z formulářů

modifikace obsahu, formátování a struktury webové stránky

obsahuje funkce pro práci s databázemi (např. MySQL)

obsahuje velké množství dalších odladěných funkcí, např.:

- práce s textovými řetězci

- práce s datem a časem

- práce s elektronickou poštou a pro FTP přístup na server

- matematické funkce

- práce s obrázky

- práce se soubory a složkami, atd.

- možnost vytvářet vlastní funkce a procedury

skripty prováděny na serveru – výsledná stránka neobsahuje PHP kód

Page 7: TVORBA WEBOVÝCH STRÁNEK

Pravidla použití jazyka PHPPravidla použití jazyka PHP

soubory webové stránky obsahující PHP skripty musí mít příponu

*.php (např. index.php)

PHP skripty se vkládají mezi speciální značky:

<?php echo "ahoj světe!"; ?>

PHP příkazy, funkce, deklarace proměnných a konstant jsou vždy

ukončeny středníkem

v názvu proměnné, konstanty a vlastní funkce nepoužívat diakritiku

Page 8: TVORBA WEBOVÝCH STRÁNEK

Zjištění konfigurace PHP, spuštění skriptuZjištění konfigurace PHP, spuštění skriptu

Funkce pro zjištění konfigurace PHP enginu:

<?php phpinfo(); ?>

1. kód (PHP skript) vložit do souboru webové stránky,

2. uložit s příponou php (např. test.php) do pracovního adresáře

webového serveru,

3. pro spuštění na lokálním webovém serveru s PHP zapsat

v prohlížeči adresu: localhost/test.php

4. pro spuštění na vzdáleném webovém serveru s PHP zapsat

v prohlížeči adresu: www.mojestranky.cz/test.php

Page 9: TVORBA WEBOVÝCH STRÁNEK
Page 10: TVORBA WEBOVÝCH STRÁNEK

Příkaz ECHOPříkaz ECHO

Příkaz ECHO slouží k:

1.výpisu statických textových řetězců

2.dynamickému vkládání HTML/CSS kódu

3.výpisu obsahu PHP proměnných

4.výpisu obsahu PHP konstant

5.kombinace bodů 1. až 4.

Page 11: TVORBA WEBOVÝCH STRÁNEK

Příkaz ECHOPříkaz ECHO

1. Výpis statických textových řetězců

<?php echo "Ahoj světe!"; ?>

Celá konstrukce se zapíše přímo do těla webové stránky, tedy mezi

párové značky <body> </body>

UPOZORNĚNÍ:

Spustit na lokálním webovém

serveru (localhost, popř. přímo

adresa 127.0.0.1) !!!

Page 12: TVORBA WEBOVÝCH STRÁNEK

Příkaz ECHOPříkaz ECHO

2. Dynamické vkládání HTML/CSS kódu

<?php

echo "<span class='cervene'>Ahoj</span> světe!";

?>1. použít apostrofy '

2. použít sekvenci \"

UPOZORNĚNÍ:

HTML / CSS kód uvnitř příkazu

ECHO bude interpretován, nikoliv

zobrazen jako statický text !!!

Page 13: TVORBA WEBOVÝCH STRÁNEK

Psaní speciálních znakůPsaní speciálních znaků

Některé znaky mají v PHP speciální význam. Pro výpis znaku v

prohlížeči je nutné použít zpětné lomítko před tímto znakem.

Speciální znak Význam v PHP Zápis znaku

" Uvozuje statický text příkazu ECHO \"

' Nahrazuje uvozovky uvnitř ECHO \'$ Označení proměnné v PHP \$

\ Převede spec. symbol na literární znak \\

Takto zapsaná sekvence (zpětné lomítko + znak)

je uvnitř příkazu ECHO chápána jako znak (", ', $, \)

Page 14: TVORBA WEBOVÝCH STRÁNEK

Psaní speciálních znakůPsaní speciálních znaků

<?php

echo "Vyučující řekl: \"Děti, pište si!\"";

echo "<br />";

echo "Cena je <span class=\"cervene\">1.000\$</span>";

?>

Page 15: TVORBA WEBOVÝCH STRÁNEK

Komentáře v PHPKomentáře v PHP

Slouží k popisu jednotlivých části PHP kódu pro větší přehlednost,

snadnou úpravu a pochopení kódu i za delší dobu provozu webu.

PHP engine při interpretaci PHP skriptů komentáře ignoruje.

<?php

/*

Víceřádkový komentář. Při vývoji a testování webu

slouží také k odstavení nepoužívané části PHP kódu.

*/

echo "Ahoj světe!"; //Jednořádkový komentář

?>

Page 16: TVORBA WEBOVÝCH STRÁNEK

Proměnné v PHPProměnné v PHP

Proměnné slouží k uchování hodnot, které lze během provádění skriptu

měnit.

Proměnné začínají znakem $ (dolar), např. $soucet

Pro název proměnné platí tato pravidla:

- nepoužívat diakritiku,

- PHP rozlišuje velká a malá písmena ($prom ≠ $PROM),

- název nesmí obsahovat jiné symboly než písmena, číslice, podtržítko,

- název vždy začíná písmenem nebo podtržítkem.

Proměnnou lze deklarovat na kterémkoliv místě v PHP skriptu

Není potřeba uvádět datový typ hodnot, které bude obsahovat.

Page 17: TVORBA WEBOVÝCH STRÁNEK

Přiřazení hodnoty do proměnnéPřiřazení hodnoty do proměnné

Operátorem pro přiřazení hodnoty do proměnné je = (znak „rovná se“)

Proměnné, umožňující přiřazení jedné hodnoty:

$promenna_cislo = 2;

$promenna_cislo = 1.76;

$promenna_cislo = 1e-3; (ekvivalent k číslu 0.001)

$promenna_text = "Nějaký textový řetězec";

$promenna_text = "2";

$promenna_log = true; (logické hodnoty: true - pravda, false - nepravda)

Page 18: TVORBA WEBOVÝCH STRÁNEK

Vypsání hodnoty proměnnéVypsání hodnoty proměnné

$vek = 35; // deklarace proměnné

echo $vek; // vypíše: 35

echo "Je mi $vek let."; // vypíše: Je mi 35 let.

echo "Je mi <strong>$vek</strong> let."; // vypíše: Je mi 35 let.

echo "Proměnná \$vek = $vek "; // vypíše: Proměnná $vek = 35

Page 19: TVORBA WEBOVÝCH STRÁNEK

Výpis hodnoty proměnnéVýpis hodnoty proměnné

Pro výpis obsahu proměnných společně s textem je někdy výhodné použít

spojení pomocí symbolu tečky nebo čárky. Nezbytné především u

proměnných typu SESSION, COOKIE, POST, GET, SERVER,

REQUEST, ENV a tzv. asociativních polí.

$vek = 35;

echo "Je Vám <span class='cervene'>".$vek."</span> let.";

echo "Vaše IP adresa je: ",$_SERVER["REMOTE_ADDR"];

Výsledný text v prohlížeči:

Je Vám 35 let. Vaše IP adresa je: 82.209.58.100

Page 20: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Umožňuje uchovávat více hodnot (prvků pole), které spolu souvisí.

Každá hodnota je dostupná pomocí indexu, zapsaného v hranaté

závorce.

Pokud není uvedeno jinak, pole se indexuje od nuly.

Příklad jednoduché proměnné typu pole:

$jmena[0] = "Pankrác";

$jmena[1] = "Servác";

$jmena[2] = "Bonifác";

echo $jmena[1]; //vypíše Servác

Page 21: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Jednotlivé hodnoty uložené v poli mohou být libovolného typu:

Ukázkový příklad:

$pole[0] = 3.14; // reálné číslo

$pole[1] = 77; // celé číslo

$pole[2] = "Toto je nějaký text…"; // textový řetězec

Page 22: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Inicializaci pole lze provést také zjednodušeně pomocí funkce array()

Ukázkový příklad:

$RajskySalat = array('rajče', 'cibule', 'sůl', 'cukr', 'pepř');

echo $RajskySalat[2];  // Vypíše:  sůl

Page 23: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Pokud u pole použijeme prázdný index, číslování indexů je nastaveno

automaticky od nuly.

Ukázkový příklad:

$pole[ ] = 11;

$pole[ ] = 22;

$pole[ ] = 33;

echo $pole[0]; //vypíše 11

echo $pole[1]; //vypíše 22

echo $pole[2]; //vypíše 33

Page 24: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Jako index lze použít textový řetězec (tzv. asociativní pole).

Ukázkový příklad:

$kosik["kod_zbozi"] = 76889;

$kosik["nazev"] = "Nikon D700";

$kosik["cena"] = 54990;

echo $kosik["nazev"]; //vypíše Nikon D700

Page 25: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Počet prvků v poli lze zjistit pomocí funkce count()

Ukázkový příklad:

$RajskySalat = array('rajče', 'cibule', 'sůl', 'cukr', 'pepř');

$pocet = count($RajskySalat); // proměnná $pocet má hodnotu 5

Page 26: TVORBA WEBOVÝCH STRÁNEK

Proměnná typu „pole“Proměnná typu „pole“

Pole může být i vícerozměrné přidáním dalších indexů.

Ukázkový příklad dvourozměrného pole $kaledar:

$kalendar["leden"][1] = "Nový rok";

$kalendar["leden"][2] = "Vyspávám opičku…";

$kalendar["leden"][3] = "3. leden - Hurá do práce!";

echo $kalendar["leden"][2]; //vypíše Vyspávám opičku…

Page 27: TVORBA WEBOVÝCH STRÁNEK

Konstanty v PHPKonstanty v PHP

Konstanta slouží k pojmenování hodnoty, na kterou se budeme při

provádění skriptu odkazovat. Hodnotu konstanty nelze za běhu měnit.

define ("jmeno_konstanty", "hodnota");

define ("pi", "3.14");

define ("max", "100");

define ("maxN", "100", true);

Třetí parametr je volitelný – “true” znamená že nezáleží na velikosti

písmen v názvu konstanty (maxN, maxn, MAXN, atd. jsou shodné).

Page 28: TVORBA WEBOVÝCH STRÁNEK

Konstanty v PHPKonstanty v PHP

Použití konstanty ve skriptu:

define ("max", "100");

echo "Maximální hodnota je ".max;

Výsledný text v prohlížeči:

Maximální hodnota je 100

Využití konstant:

Číselné hodnoty označíme výstižnějším názvem, který lépe vystihuje

jejich význam (např. konstanta pi = 3.14, abs_nula = -273.16),

Změna konstantní hodnoty v rozsáhlých stránkách na jednom místě.

Page 29: TVORBA WEBOVÝCH STRÁNEK

Metody odesílání dat z formulářeMetody odesílání dat z formuláře

Metody GET a POST určují způsob odeslání dat z formuláře

obslužnému skriptu.

Uživatelem vložené, popřípadě předdefinované (atribut VALUE)

hodnoty jednotlivých formulářových prvků jsou v obslužném skriptu

přístupné prostřednictvím globální proměnné typu pole:

Jméno formulářového prvku (atribut NAME)

$_GET["nazev_prvku"] $_POST["nazev_prvku"]

Page 30: TVORBA WEBOVÝCH STRÁNEK

Metoda GETMetoda GET

Výchozí metoda všech formulářů. Všechna data formuláře jsou zaslána

obslužnému skriptu prostřednictvím URL adresy.

Metodu lze využít při navigaci v rámci webové stránky a při předávání

parametrů stránky (např. ID článku, vyhledávaný řetězec, apod.)

Metoda GET je vhodná pouze pro zasílání textových řetězců, nelze

použít pro odesílání souborů nebo velkého objemu hodnot !!!

Hodnoty se přenášejí ve tvaru nazev_promenne = hodnota

Příklad:

http://www.vase-stranky.cz/obsluha.php?prom1=hodn1&prom2=hodn2

Page 31: TVORBA WEBOVÝCH STRÁNEK

Metoda GETMetoda GET

Znaky v URL Význam

? oddělení URL od přenášených hodnot

proměnná = hodnota přenášené hodnoty

& oddělení jednotlivých proměnných

+ Zástupný znak mezery

symboly, znaky s diakritikou Převedeny na: %HEX kód znaku

Pozn.: HEX = Hexadecimální (šestnáctková) číselná soustava.

Příklad: znak „č“ bude v URL přenášen ve tvaru %E8 (E816 = 23210)

Page 32: TVORBA WEBOVÝCH STRÁNEK

Metoda GETMetoda GET

Konstrukce formuláře: formular.htm

<form action="vypis.php" method="GET">

Jméno: <input name="jmeno" type="text" /><br />

Příjmení: <input name="prijmeni" type="text" /><br />

<input type="submit" value="Odeslat" />

</form>

Page 33: TVORBA WEBOVÝCH STRÁNEK

Metoda GETMetoda GET

PHP automaticky dekóduje data z URL adresy a uloží každou dvojici

promenna=hodnota jako proměnnou s odpovídajícím názvem do pole

$_GET ["jmeno_formularoveho_prvku"]

localhost/vypis.php?jmeno=Pavel&prijmeni=Chmiel

Obslužný skript: vypis.php

<?php

echo "Vaše jméno: ".$_GET["jmeno"]."<br>";

echo "Vaše příjmení: ".$_GET["prijmeni"];

?>

Page 34: TVORBA WEBOVÝCH STRÁNEK

formular.htm

vypis.php

Page 35: TVORBA WEBOVÝCH STRÁNEK

Metoda POSTMetoda POST

Metoda je určena pro odesílání většího objemu dat (velké množství

textových hodnot, datové soubory různého typu, apod.) v přímo v těle

HTTP požadavku webovému serveru.

Přenášená data nejsou součástí URL adresy, vhodné pro přenos

citlivých údajů (např. login, heslo, bezpečnostní kód, apod.).

Metoda POST vždy odesílá nový HTTP požadavek webovému serveru.

Nehledá se tedy stránka uložená v mezipaměti (cache) prohlížeče na

lokálním disku, ale vždy se načte nová stránka z webového serveru.

Page 36: TVORBA WEBOVÝCH STRÁNEK

Metoda POSTMetoda POST

Konstrukce formuláře: formular.htm

<form action="vypis.php" method="POST">

Jméno: <input name="jmeno" type="text" /><br />

Příjmení: <input name="prijmeni" type="text" /><br />

<input type="submit" value="Odeslat" />

</form>

Page 37: TVORBA WEBOVÝCH STRÁNEK

Metoda GETMetoda GET

PHP dekóduje data z HTTP požadavku webovému serveru a uloží je

jako proměnnou s odpovídajícím názvem do pole:

$_POST ["jmeno_formularoveho_prvku"]

localhost/vypis.php

Obslužný skript: vypis.php

<?php

echo "Vaše jméno: ".$_POST["jmeno"]."<br />";

echo "Vaše příjmení: ".$_POST["prijmeni"];

?>

Page 38: TVORBA WEBOVÝCH STRÁNEK

formular.htm

vypis.php

Page 39: TVORBA WEBOVÝCH STRÁNEK

Metoda POST – přenos souborůMetoda POST – přenos souborů

Odesílají-li se z formuláře metodou POST kromě textu také soubory

(např. obrázky), je potřeba v definici formuláře nastavit atribut ENCTYPE:

enctype = "multipart/form-data"

<form action="skript.php" method="POST" enctype="multipart/form-data">

<input type="file" name="soubor" />

… další formulářové prvky ….

</form>

Page 40: TVORBA WEBOVÝCH STRÁNEK

SESSION proměnnéSESSION proměnné

Patří mezi tzv. superglobální proměnné – hodnoty uložené v těchto

proměnných jsou přístupné na všech webových stránkách (ve všech

souborech obsahujících PHP skripty) určité webové prezentace.

Před použitím SESSION proměnné na určité webové stránce je nutné

zavolat funkci (pouze jednou na stránce): session_start();

(nespoléhat se na nastavení v souboru php.ini: session.auto_start =1)

Webový prohlížeč uživatele, který si stránku načte, získá jedinečný

ID kód (session ID). Zároveň se vytvoří textový soubor (tzv. session,

neboli relace) na straně webového serveru s tímto ID, ve kterém jsou

ukládány veškeré session proměnné a jejich hodnoty tohoto uživatele.

Page 41: TVORBA WEBOVÝCH STRÁNEK

SESSION proměnnéSESSION proměnné

Příklad názvu souboru:

sess_l20dpvbrg7pfu01lr47qf1nue3

Příklad obsahu souboru:

id|i:1;cas|i:1096972373;stranek|i:8

Session (relace) je platná:

Dokud ji nezrušíme pomocí PHP funkce session_destroy();

Dokud neukončíme webový prohlížeč

Page 42: TVORBA WEBOVÝCH STRÁNEK

Vytvoření SESSION proměnnéVytvoření SESSION proměnné

<?php

session_start();

$_SESSION["nazev_promenne"] = hodnota;

?>

Hodnota proměnné bude přístupná na všech webových stránkách

(resp. PHP skriptech) webové prezentace.

Umožňuje tedy jednoduché sdílení hodnot mezi jednotlivými

částmi webové prezentace.

Page 43: TVORBA WEBOVÝCH STRÁNEK

Použití SESSION proměnnéPoužití SESSION proměnné

<?php

session_start();

$_SESSION["cislo"] = 35;

?>

<?php

session_start();

echo "Číselná hodnota: ".$_SESSION["cislo"]."<br />";

?>

soubor1.php

soubor2.php

Page 44: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro SESSION proměnnéPHP funkce pro SESSION proměnné

session_start() - vytvoří session (ID)

session_id() - zjistí aktuální session ID

session_is_registered("nazev_promenne") - vrátí hodnotu TRUE,

pokud je session proměnná již zaregistrovaná a FALSE v případě,

že ještě není zaregistrována

unset($_SESSION["nazev_promenne"]) - Zrušení hodnoty

proměnné nazev_promenne v session

session_destroy() - odstraní aktuální session (např. při odhlašování

uživatele)

Page 45: TVORBA WEBOVÝCH STRÁNEK

Proměnné webového serveru a PHPProměnné webového serveru a PHPJedná se o proměnné vytvářené webovým serverem a PHP enginem:

$_SERVER["nazev_promenne"]

Proměnné a jejich obsah (hodnoty) lze ve skriptech běžně používat.

Přehled proměnných a jejich hodnot získáme pomocí funkce phpinfo();

(v části „PHP Variables“)

Ukázka systémových proměnných a jejich obsahu:

Page 46: TVORBA WEBOVÝCH STRÁNEK

Základní matematické operátoryZákladní matematické operátoryOperátor Operace Příklad

+ sčítání 7 + 2 = 9

- odečítání 7 – 2 = 5

* násobení 7 * 2 = 14

/ dělení 7 / 2 = 3.5

% zbytek po celočíselném dělení 7 % 2 = 1

Matematické operace lze provádět s čísly, konstantami a proměnnými,

jejichž obsahem je číslo, popřípadě textový řetězec, který lze na číslo

převést.

Lze používat také PHP funkce, jejichž výstupem je číselná hodnota.

Pro změnu pořadí matematických operací lze využít kulaté závorky ( ).

Page 47: TVORBA WEBOVÝCH STRÁNEK

Základní matematické operátoryZákladní matematické operátory

<?php

$a = 1; $b = 3; $c = 5; $d = "7"; $e = "ahoj";

echo $a + $b; // vypíše: 4

echo ($d + $a) * $c; // vypíše: 40, proměnná $d se přetypuje na číslo 7

echo $e + $a; // vypíše: 1, proměnnou $e nelze přetypovat na číslo!

echo $d / 5; // vypíše: 1.4

echo $d % 5; // vypíše: 2

echo $a - ($d * ($b - 2)); // vypíše: -6

echo round($c + sqrt($b)); // vypíše: 7

?>odmocnina čísla

zaokrouhlení čísla

PHP funkce:

Page 48: TVORBA WEBOVÝCH STRÁNEK

Příkazy pro větvení programuPříkazy pro větvení programu

Umožňují stanovit bloky kódu, které budou provedeny při splnění či

nesplnění stanovených podmínek. Základní konstrukce podmínkového

příkazu:

IF (jestliže) – ELSE (jinak)

Provede se příkaz nebo blok kódu, je-li splněna podmínka.

$a = 1;

if ($a==0)

echo "proměnná \$a je rovna hodnotě 0"; // Tento příkaz se neprovede

else

echo "proměnná \$a není rovna hodnotě 0"; // Tento příkaz se

provede

Page 49: TVORBA WEBOVÝCH STRÁNEK

Konstrukce podmínky příkazu Konstrukce podmínky příkazu IF

Podmínka se uvádí v kulaté závorce za příkazem IF. Za příkazem IF ani

ELSE se nepíše středník!

if (podmínka)

Vyhodnocení podmínky musí vracet logickou hodnotu:

TRUE – „pravda“, neboli podmínka je splněna

FALSE – „nepravda“, neboli podmínka není splněna

Jedná se především o porovnávání (komparaci) dvou hodnot.

Je-li podmínka splněna (TRUE), vykoná se blok příkazů části IF, není-li

podmínka splněna (FALSE), vykoná se blok příkazů části ELSE.

Page 50: TVORBA WEBOVÝCH STRÁNEK

Konstrukce podmínky příkazu IFKonstrukce podmínky příkazu IF

Podmínkové výrazy Význam

(A == B) A je rovno B

(A < B) (A > B) (A je menší než B) (A je větší než B)

(A <= B) A je menší nebo rovno B

(A >= B) A je větší nebo rovno B

(A <> B) (A != B) A je různé od B

A, B – mohou představovat proměnné, konstanty, statické hodnoty

(číselné, textové, logické), popř. funkce, vracející tyto hodnoty.

Page 51: TVORBA WEBOVÝCH STRÁNEK

Příkazy pro větvení programuPříkazy pro větvení programu

Jestliže má být po vyhodnocení podmínky vykonáno více příkazů,

uzavíráme je do složených závorek. Platí pro část IF i část ELSE. Část

ELSE není povinná, pro korektní běh skriptu by měla být vždy definována.

if ($a==0)

{

echo "1. řádek<br />";

echo "2. řádek<br /> ";

echo "3. řádek";

}

else

echo "proměnná \$a není rovna hodnotě 0";

Page 52: TVORBA WEBOVÝCH STRÁNEK

Příkazy pro větvení programuPříkazy pro větvení programu

Další možností, jak ohraničit blok kódu, je použít místo složených závorek

konstrukci dvojtečka – příkaz endif;

if ($a==0):

echo "1. řádek<br />";

echo "2. řádek<br /> ";

echo "3. řádek";

endif;

Page 53: TVORBA WEBOVÝCH STRÁNEK

Logické operátoryLogické operátory

Operátor Význam Pravda když

andlogický součin všechny podmínky jsou pravdivé

&&

orlogický součet alespoň jedna podmínka je pravdivá

||

! negace pokud je podmínka nepravdivá

XOR neekvivalence pouze jedna podmínka je pravdivá

Rozhodovacích podmínek lze stanovit i více, spojují se pomocí logických

operátorů, které určují pravdivost či nepravdivost celého výroku:

Page 54: TVORBA WEBOVÝCH STRÁNEK

Konstrukce podmínky příkazu Konstrukce podmínky příkazu IF

if ((podmínka 1) and (podmínka 2) and (podmínka N))

{

Tyto příkazy se provedou, pokud jsou splněny (TRUE) všechny

stanovené podmínky.

}

else

{

Provede se, pokud minimálně jedna z podmínek není splněna.

}

Page 55: TVORBA WEBOVÝCH STRÁNEK

Konstrukce podmínky příkazu Konstrukce podmínky příkazu IF

$a = 3;

if (($a > 0) and ($a <= 10))

{

Tyto příkazy se provedou, pokud proměnná $a bude nabývat hodnot:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10.

}

else

{

Blok příkazů se provede ve všech ostatních případech.

}

Page 56: TVORBA WEBOVÝCH STRÁNEK

Konstrukce podmínky příkazu Konstrukce podmínky příkazu IF

if ((podmínka 1) or (podmínka 2) or (podmínka N))

{

Tyto příkazy se provedou, pokud je splněna (TRUE) minimálně jedna

ze stanovených podmínek.

}

else

{

Provede se, pokud není splněna žádná ze stanovených podmínek.

}

Page 57: TVORBA WEBOVÝCH STRÁNEK

Konstrukce podmínky příkazu Konstrukce podmínky příkazu IF

if (($_GET["vek"] >= 18) or ($_SESSION["prihlasen"] == "ano"))

{

Tyto příkazy se provedou, pokud proměnná vek je větší nebo rovna 18,

nebo proměnná prihlasen nabývá hodnoty ano, popřípadě jsou splněny

obě podmínky najednou.

}

else

{

Blok příkazů se provede ve všech ostatních případech.

}

Page 58: TVORBA WEBOVÝCH STRÁNEK

Příkaz IF – ELSEIF – ELSEPříkaz IF – ELSEIF – ELSEif ($stat == "cz") { echo "Česká republika"; }elseif ($stat == "svk") { echo "Slovenská republika"; } elseif ($stat == "pl") { echo "Polsko"; } else { echo "Nelze identifikovat stát!"; }

Umožňuje testovat podmínku na více

hodnot.

Za jedním příkazem IF může být i

více příkazů ELSEIF.

Konečná větev ELSE pak obsahuje

kód, který by měl být proveden

v případě, že nebyla splněna ani

jedna z předchozích podmínek za IF

nebo ELSEIF.

Page 59: TVORBA WEBOVÝCH STRÁNEK

Příkaz SWITCH – CASEPříkaz SWITCH – CASE

switch ($stat)

{ case "cz":

echo "Česká republika";

break;

case "svk":

echo "Slovenská republika";

break;

case "pl":

echo "Polsko";

break;

default:

echo "Nelze identifikovat stát!";

}

Umožňuje testovat podmínku na více

hodnot, stejně jako konstrukce

IF – ELSEIF – ELSE.

1.Zjisti se hodnota proměnné $stat

2.Prochází se jednotlivé větve (case)

a jakmile se narazí na vyhovující

podmínku, provede se blok kódu až k

příkazu break;

3.Větev default se provede, pokud

nevyhoví žádná podmínka (obdoba

ELSE).

Page 60: TVORBA WEBOVÝCH STRÁNEK

Kombinace PHP a HTML kóduKombinace PHP a HTML kódu

Pro rychlejší zpracování webové stránky na straně serveru je vhodné,

pokud je to možné, nevkládat HTML kód pomocí příkazu ECHO:

<?php if ($stat == "cz"): ?>

<h1>Česká republika</h1>

<p>...</p>

<?php elseif ($stat == "svk"): ?>

<h1>Slovenská republika</h1>

<p>...</p>

<?php endif; ?>

Page 61: TVORBA WEBOVÝCH STRÁNEK

Kombinace PHP a HTML kóduKombinace PHP a HTML kódu

<?php if ($_SESSION["prihlasen"] == "ano") { ?>

<h1>Zabezpečená stránka uživatele</h1>

<p>...</p>

<?php

}

else {

?>

<div id="neprihlasen">Přihlášení se bohužel nezdařilo…</div>

<?php } ?>

Page 62: TVORBA WEBOVÝCH STRÁNEK

Příkazy pro tvorbu cyklůPříkazy pro tvorbu cyklů

Cykly jsou určeny k opakovanému provádění bloku kódu v zadaném počtu

nebo do splnění podmínky. V PHP jsou dva základní druhy cyklů:

Cyklus WHILE

Testuje podmínku před nebo po každé iteraci (kroku) a znovu se provede

pouze v případě, že je splněna stanovená podmínka.

Cyklus FOR

Počet iterací (počet opakování bloku kódu) je přesně stanoven před

prvním provedením (v definici příkazu FOR).

Page 63: TVORBA WEBOVÝCH STRÁNEK

Příklady použití cyklůPříklady použití cyklů

procházení hodnot proměnné typu „pole“,

inicializace proměnné typu „pole“,

zpracování výsledku dotazu do databáze,

vytváření položek rozbalovacího menu (formulářový prvek),

výpis řady po sobě jdoucích číselných či textových hodnot,

opakované provedení určitého bloku kódu,

apod.

Page 64: TVORBA WEBOVÝCH STRÁNEK

Cyklus WHILECyklus WHILE

Jedná o cyklus s podmínkou na začátku.

while = dokud je splněna podmínka, prováděj blok příkazů cyklu.

while (podmínka) 

{

příkazy;

}

while (podmínka): 

příkazy;

endwhile;

Page 65: TVORBA WEBOVÝCH STRÁNEK

Cyklus WHILECyklus WHILE

$i = 1; // řídící proměnná cyklu

while ($i < 10) 

{

echo "Právě se provádí $i krok cyklu.<br />";

++$i; // zvýšení hodnoty proměnné $i o 1 ($i = $i + 1)

}

Bez změny hodnoty proměnné $i by cyklus nikdy neskončil, neboť

proměnná $i by stále nabývala hodnoty 1 (podmínka splněna) !!!

++$i představuje zvýšení (inkrementaci) hodnoty proměnné $i o 1.

--$i představuje snížení (dekrementaci) hodnoty proměnné $i o 1.

Page 66: TVORBA WEBOVÝCH STRÁNEK

Cyklus DO – WHILECyklus DO – WHILE

Jedná o cyklus s podmínkou na konci.

do 

{

příkazy;

}

while (podmínka);

Pravdivost výrazu se testuje na konci každé iterace namísto jejího

začátku. první iterace cyklu do...while se provede vždy (pravdivost výrazu

je testována až na konci iterace), což u cyklu while není zaručeno.

Page 67: TVORBA WEBOVÝCH STRÁNEK

Cyklus DO – WHILECyklus DO – WHILE

$i = 11; // řídící proměnná cyklu

do 

{

echo "Právě se provádí $i krok cyklu.<br />";

++$i; // zvýšení hodnoty proměnné $i o 1 ($i = $i + 1)

}

while ($i < 10);

Jelikož se podmínka cyklu vyhodnocuje na konci, blok příkazů se jednou

provede i když hodnota 12 (11+1) je větší než 10!

Page 68: TVORBA WEBOVÝCH STRÁNEK

Cyklus FORCyklus FOR

Jedná o cyklus s přesně daným počtem kroků (opakování bloku příkazů).

for (výraz1; výraz2; výraz3) 

{

příkazy;

}

for  (výraz1; výraz2; výraz3): 

příkazy;

endfor;

výraz1

Proveden pouze jednou na začátku cyklu.

Inicializace řídící proměnné cyklu na

počáteční hodnotu.

výraz2

Vyhodnocen na začátku každého opakování

cyklu. Testování stanovené podmínky.

výraz3

Vyhodnocen na konci každého opakování

cyklu. Změna hodnoty řídící proměnné.

Page 69: TVORBA WEBOVÝCH STRÁNEK

Cyklus FORCyklus FOR

for ($i = 1;  $i < 10;  ++$i) 

{

// Provede se přesně 9 opakování (kroky 1, 2, 3, 4, 5, 6, 7, 8, 9)

echo "Právě se provádí $i krok cyklu.<br />";

}

for ($i = 1;  $i < 10;  $i = $i + 2) 

{

// Provede se přesně 5 opakování (kroky 1, 3, 5, 7, 9)

echo "Právě se provádí $i krok cyklu.<br />";

}

Page 70: TVORBA WEBOVÝCH STRÁNEK

Cyklus FORCyklus FOR

$RajskySalat = array("rajče", "cibule", "sůl", "cukr", "pepř");

for ($i = 0;  $i < count($RajskySalat);  ++$i)

echo $RajskySalat [$i]."<br />";

Page 71: TVORBA WEBOVÝCH STRÁNEK

Cyklus FORCyklus FOR

<form action="skript.php" method="post">

<select name="poradi">

<?php

for ($i = 1;  $i <= 5;  ++$i)

echo "<option value=\"",$i,"\">",$i,". místo</option>";

?>

</select>

</form>

Page 72: TVORBA WEBOVÝCH STRÁNEK

Cyklus FOREACHCyklus FOREACH

Používá se pro procházení všech prvků proměnné typu „pole“.

Zjednodušuje příkaz FOR. Název příkazu je odvozen z anglických slov:

FOR – “pro”

EACH – “každý”

AS – “jako”

foreach ($nazev_pole as $hodnota)

{

echo "$hodnota <br />";

}

Vypíše hodnoty všech prvků pole $nazev_pole.

Page 73: TVORBA WEBOVÝCH STRÁNEK

Cyklus FOREACHCyklus FOREACH

$RajskySalat = array("rajče", "cibule", "sůl", "cukr", "pepř");

foreach ($RajskySalat as $ingredience)

echo "$ingredience <br />";

Page 74: TVORBA WEBOVÝCH STRÁNEK

Cyklus FOREACHCyklus FOREACH

$RajskySalat = array("rajče", "cibule", "sůl", "cukr", "pepř");

foreach ($RajskySalat as $i => $ingredience)

echo "$i. položka salátu: $ingredience <br />";

Page 75: TVORBA WEBOVÝCH STRÁNEK

Příkaz BREAKPříkaz BREAK

Příkaz umožňuje předčasné ukončení provádění cyklu (FOR i WHILE).

Je-li řídící proměnná $i rovna 3, provádění cyklu se přeruší. Provedou se

tedy kroky 1, 2 a poté celý cyklus skončí.

for ($i = 1;  $i < 10;  ++$i) 

{

if ($i == 3) break;

echo "Právě se provádí $i krok cyklu.<br />";

}

Page 76: TVORBA WEBOVÝCH STRÁNEK

Příkaz CONTINUEPříkaz CONTINUE

Příkaz umožňuje přeskočit příslušnou iteraci (krok) cyklu (FOR i WHILE) a

pokračovat dále až do konce.

Je-li řídící proměnná $i rovna 3, přeskočí se daný krok cyklu. Povedou se

tedy kroky 1, 2, 4, 5, 6, 7, 8, 9

for ($i = 1;  $i < 10;  ++$i) 

{

if ($i == 3) continue;

echo "Právě se provádí $i krok cyklu.<br />";

}

Page 77: TVORBA WEBOVÝCH STRÁNEK

Vnořování cyklůVnořování cyklů

$iterace = 0;

for ($i = 0;  $i < 20;  ++$i) 

{

for ($j = 0;  $j < 5;  ++$j) 

{

echo "Právě se provádí $iterace.<br />";

}

}

Provede se 20x vnitřní cyklus s řídící proměnnou $j. Textový řetězec bude

pod sebou vypsán 100x. Vhodné např. pro práci s dvourozměrným polem.

Page 78: TVORBA WEBOVÝCH STRÁNEK

Příkazy pro vkládání obsahu souborůPříkazy pro vkládání obsahu souborů

PHP obsahuje příkazy require a include, které načítají a provádí kód

ze zadaného externího souboru.

Příkazy jsou totožné, liší se pouze v případě, kdy vkládaný soubor není

nalezen:

require - skončí s chybou (Fatal Error) a zastaví se zpracování

stránky.

include – vypíše varování (Warning) a skript se pokusí běžet dál.

Oba příkazy očekávají, že vkládané soubory jsou v kódu HTML, nikoliv

PHP. Je-li vkládaný soubor skript PHP, musí být ohraničen PHP tagy.

Page 79: TVORBA WEBOVÝCH STRÁNEK

Syntaxe příkazů require a includeSyntaxe příkazů require a include

Syntaxe obou příkazů je shodná. Název souboru a cesta k němu se

zapíše do uvozovek nebo apostrofů. Ukázka příkazu include:

1. Soubor je ve stejném adresáři jako stránka obsahující příkaz:

include "soubor.php";

2. Soubor je v podadresáři:

include "adresar/soubor.php";

3. Soubor je v nadřazeném adresáři:

include "../soubor.php";

Page 80: TVORBA WEBOVÝCH STRÁNEK

Příklad použití require a includePříklad použití require a include

<?php

$ovoce = "jablko";

$barva = "zelené";

?>

deklarace.php

<?php

   echo "Vidím ", $barva, " ", $ovoce; // proměnné neexistují (chyba)

   include  "deklarace.php";

   echo "Vidím ", $barva, " ", $ovoce; // vypíše: Vidím zelené jablko

?>  

hlavni_stranka.php

Page 81: TVORBA WEBOVÝCH STRÁNEK

Příklady použití require a includePříklady použití require a include

Příkazy umožňují vytvářet přehlednější kód webových stránek, který je

jednodušší na správu. Změna v externím souboru se projeví ve všech

stránkách (souborech), kde byl obsah souboru vložen.

Použitelné zejména pro:

vytváření / uzavírání spojení s databází,

vkládání uživatelských funkcí, proměnných nebo konstant,

vkládání uživatelských menu, hlaviček stránky apod.,

vkládání formulářů nebo jeho částí,

vkládání textů, apod.

Page 82: TVORBA WEBOVÝCH STRÁNEK

Funkce v PHPFunkce v PHP

Funkce je pojmenovaný blok kódu, který lze na jednom místě

nadefinovat a pak jej používat prostým zapsáním jména funkce

kdekoliv ve skriptech dané webové stránky.

PHP funkce se deklarují klíčovým slovem function, pak následuje

jméno funkce (nerozlišuje se velká a malá písmena) a kulaté závorky.

V kulatých závorkách lze předávat funkci vstupní hodnoty (argumenty),

funkce může vracet výstupní hodnotu.

Rozdělení PHP funkcí:

- vlastní, uživatelem definované funkce

- předdefinované funkce v PHP (již vytvořené programátory PHP)

Page 83: TVORBA WEBOVÝCH STRÁNEK

Uživatelské funkce v PHPUživatelské funkce v PHP

function jmeno_funkce (argument1, argument2, ...)

{

  sekvence příkazů;

  return návratová hodnota;

}

Argumenty funkce lze vynechat, pokud nepotřebujeme v těle funkce

zpracovávat hodnoty předané z vnějšku (kulaté závorky zůstanou

prázdné).

Pokud má funkce vracet hodnotu, musí obsahovat klíčové slovo

return. Proměnná nebo výraz uvedené za return se vrátí jako

výsledná hodnota.

Page 84: TVORBA WEBOVÝCH STRÁNEK

Uživatelské funkce v PHPUživatelské funkce v PHP

<?php

// Deklarace funkce

function TretiMocnina($cislo) 

{

    $vysledek = $cislo * $cislo * $cislo;

    return $vysledek;

}

// Volání funkce TretiMocnina()

echo TretiMocnina(5);  // Vypíše: 125

?>

Page 85: TVORBA WEBOVÝCH STRÁNEK

Argumenty funkcíArgumenty funkcí

Argumenty funkcí mohou být především:

literáty (čísla, textové znaky, kombinace obojího)

konstanty

proměnné

výsledky provádění jiné funkce

kombinace výše zmíněných možností

function jmeno_funkce (1)

function jmeno_funkce (max)

function jmeno_funkce ($x, $y)

function jmeno_funkce (jina_funkce($a), "součet")

Page 86: TVORBA WEBOVÝCH STRÁNEK

Argumenty funkcí předávané hodnotouArgumenty funkcí předávané hodnotou

Proměnná uvnitř funkce ($cislo) je kopií hodnoty, která je jí předána

($a). Změna parametru ($cislo), nezmění předanou hodnotu proměnné

($a).

function dvakrat ($cislo)

{

return $cislo = $cislo * 2;

}

$a = 6;

echo $a; // vypíše 6

echo dvakrat($a); // vypíše 12

echo $a; // vypíše 6

Page 87: TVORBA WEBOVÝCH STRÁNEK

Argumenty funkcí předávané odkazemArgumenty funkcí předávané odkazem

Proměnná uvnitř funkce ($cislo) zastupuje přímo proměnnou, která je jí

předána ($a). Změna parametru ($cislo), změní předanou hodnotu

proměnné ($a).

function dvakrat (&$cislo) // argument musí být proměnná !!!

{

return $cislo = $cislo * 2;

}

$a = 6;

echo $a; // vypíše 6

echo dvakrat($a); // vypíše 12

echo $a; // vypíše 12

Page 88: TVORBA WEBOVÝCH STRÁNEK

Rozsah platnosti proměnnéRozsah platnosti proměnné

Proměnné deklarované uvnitř funkcí jsou lokální, nejsou tedy platné

(viditelné) mimo funkci !!! Pro přístup ke globální proměnné uvnitř funkce

se musí použít příkaz global. Nevytváříme pak novou proměnnou, ale

používáme proměnnou, která je dostupná i jinde ve skriptu (mimo funkci).

function zmena_a()

{

$a = 10;

}

$a = 20;

zmena_a();

echo $a; // vypíše 20

function zmena_a()

{

global $a;

$a = 10;

}

$a = 20;

zmena_a();

echo $a; // vypíše 10

Page 89: TVORBA WEBOVÝCH STRÁNEK

Předdefinované funkce v PHPPředdefinované funkce v PHP

PHP obsahuje velké množství odladěných funkcí, které vytvořili

programátoři jazyka PHP. Jedná se především o funkce, umožňující:

- práci s datem a časem,

- práci s textovými řetězci a regulárními výrazy,

- práci s elektronickou poštou a pro FTP přístup na server,

- matematické funkce,

- práci s obrázky,

- práci se soubory a složkami,

- komunikaci s databázovými systémy (např. MySQL),

- odesílání emailu, atd.

Předdefinované PHP funkce jsou podrobně popsány v manuálu k PHP:

www.php.net/manual

Page 90: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s časem a datemPHP funkce pro práci s časem a datem

date("parametry_funkce_date");

Příklady použití funkce:

echo date("H:i:s"); // vypíše aktuální čas ve tvaru, např. 12:55:16

echo date("H:i:s - \o\b\ě\d"); // vypíše 12:55:16 - oběd

echo date("d.m.y"); // vypíše aktuální datum ve tvaru 02.01.12

echo date("j.n.Y"); // vypíše aktuální datum ve tvaru 2.1.2012

echo date("l"); // (malé „L“) vypíše angl. den v týdnu, např. Monday

echo date("@B"); // vypíše internetový čas, např. @512

Veškeré parametry a možné kombinace jsou uvedeny v PHP manuálu.

Page 91: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s časem a datemPHP funkce pro práci s časem a datem

mktime(hodina, minuta, sekunda, měsíc, den, rok);

Funkce mktime vrací počet sekund mezi 1. 1. 1970 a specifikovaným

datem a časem.

Čas specifikujeme v závorce v pořadí (lze vložit i proměnné a funkce):

- hodina, minuta, sekunda, měsíc, den, rok.

Pokud se některý parametr vynechá, dosadí se za to hodnota

aktuálního času.

echo mktime(0,0,0,12,24,2011); // vypíše 1324684800

echo date("l", mktime(0,0,0,12,24,2011)); // vypíše Saturday

Vhodné pro realizaci časově závislých událostí (např. pro automatické uzavření či

otevření hlasování, diskuze, rezervace, atd. k určitému datu a času).

Page 92: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

Délka textového řetězce:

strlen("textový řetězec");

mb_strlen("textový řetězec"); // Pro práci s řetězci v kódování UTF-8

$jmeno = "Pavel";

echo strlen($jmeno); // Vypíše: 5

Při použití kódování webové stránky UTF-8 (každý znak je

reprezentován

16 bitovým číslem) je potřeba na začátek skriptu umístit funkci:

mb_internal_encoding("UTF-8");

Page 93: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

Výběr části textového řetězce:

substr("textový řetězec", počáteční znak, počet znaků);

mb_substr("textový řetězec", počáteční znak, počet znaků);

echo substr("pomeranč", 2);  // Vypíše: meranč

echo substr("pomeranč", 2, 5);  // Vypíše: meran

echo substr("pomeranč", 0, 3);  // Vypíše: pom

Page 94: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

Rozdělení textového řetězce na části:

explode("dělící znak", "textový řetězec");

$text = "To máme dnes ale krásný den";

$slovo = explode(" ", $text);

echo $slovo[4];  // Vypíše: krásný

Page 95: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

Sloučení částí textového řetězce do jednoho celku:

implode("znak vkládaný mezi prvky", "skládané prvky řetězce");

$slovo = array("To", "máme", "dnes", "ale", "krásný", "den");

$text = implode(" ", $slovo);

echo $text;  // Vypíše: To máme dnes ale krásný den

Page 96: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

htmlspecialchars("Text obsahující HTML značky");

Tato funkce převede některé znaky, které mají v HTML speciální

význam (<, >, &, ", atd.) na obyčejné znaky, takže se pouze zobrazí,

ale nestanou se součástí kódu HTML.

Vhodné zejména při zpracování textu od uživatelů z formulářových

prvků před jejich zobrazením či uložením do databáze

$zprava = "<strong class='modry'>textíček</strong>";

echo htmlspecialchars($zprava);

// Vypíše neformátovaný text: <strong class='modry'>textíček</strong>

Page 97: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

strip_tags("Text obsahující HTML značky");

Tato funkce odstraní z textového řetězce veškeré HTML značky.

$zprava = "<strong class='modry'>textíček</strong>";

echo strip_tags ($zprava);

// Vypíše neformátovaný text textíček

Page 98: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro práci s textovým řetězcemPHP funkce pro práci s textovým řetězcem

md5("Textový řetězec");

Tato funkce zakóduje (zašifruje) textový řetězec podle určitého

algoritmu.

Šifrování je jednosměrné, neexistuje PHP funkce pro zpětné získání

původního textového řetězce.

Vhodné pro zakódování hesel před uložením do databáze

Pro určitý řetězec funkce vytváří stále stejný kód. Vhodné pro porovnání

hesla načteného z databáze a zadaného uživatelem

$heslo = "admin";

echo md5($heslo); // Vypíše: 21232f297a57a5a743894a0e4a801fc3

Page 99: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro odesílání mailu ze skriptuPHP funkce pro odesílání mailu ze skriptu

mail("Adresa", "Předmět", "Obsah mailu", "hlavičky");

Využívá poštovního serveru, nainstalovaného na straně webového

serveru.

Funkce vrací logickou hodnotu TRUE, byla-li zpráva úspěšně odeslána.

Pro korektní odeslání textové zprávy je doporučeno používat všechny

hlavičky ve správném (standardním tvaru).

Page 100: TVORBA WEBOVÝCH STRÁNEK

PHP funkce pro odesílání mailu ze skriptuPHP funkce pro odesílání mailu ze skriptu

<?php

//definice hlavicek

$hlavicky = "MIME-Version: 1.0\n";

$hlavicky .= "From: [email protected]\n"; // email odesilatele

$hlavicky .= "Return-Path: [email protected]\n";

$hlavicky .= "X-Mailer: PHP\n"; // mailový klient

$hlavicky .= "Content-type: text/html; charset=iso-8859-2\n";

$hlavicky .= "X-Priority: 3\n"; // priorita 1 (nejvyšší), 3, 5 (nejnižší)

//odeslání mailu ze skriptu

mail($_POST["email"], "Pozdrav", "Ahoj příteli!<br />Pavel.", $hlavicky);

?>

Page 101: TVORBA WEBOVÝCH STRÁNEK

Popis dalších předdefinovaných PHP funkcí naleznete především v:

manuálu k PHP (www.php.net/manual),

odborných výukových seriálech k PHP, např.:

www.interval.cz/programovani/php

www.linuxsoft.cz/php

odborné literatuře k PHP, např.:

Kolektiv autorů: PHP6, MySQL, Apache – Vytváříme webové aplikace

Jakub Vrána: 1001 tipů a triků pro PHP

Předdefinované funkce v PHPPředdefinované funkce v PHP

Page 102: TVORBA WEBOVÝCH STRÁNEK

Databázový systém je programový prostředek, který umožňuje:

uložení dat (nejčastěji textová a číselná) uspořádaných do tabulek,

definici datového typu uložených dat,

definici struktury databáze (struktura databázových tabulek),

realizaci vztahů (relací) mezi tabulkami (relační databáze),

komunikaci mezi databází a externí aplikací (např. PHP skriptem)

pomocí databázového jazyka (SQL - Structured Query Language), který

umožňuje vytvářet a měnit strukturu databáze, dále vkládat, měnit, mazat

a vyhledávat data v databázových tabulkách, atd.

Databázový systémDatabázový systém

Page 103: TVORBA WEBOVÝCH STRÁNEK

Databázový serverDatabázový server

Databázový server je počítač připojený k počítačové síti (lokální,

Internet), mající přidělenou adresu (IP, doménové jméno) s

nainstalovanou aplikací databázového systému.

Umožňuje aplikacím (skriptům) řízený, zabezpečený přístup k datům

uloženým v databázi.

Page 104: TVORBA WEBOVÝCH STRÁNEK
Page 105: TVORBA WEBOVÝCH STRÁNEK

Požadavky na databázový systémPožadavky na databázový systém

Měl by být (pokud možno) šířen pod GNU/GPL licencí,

Měl by být schopen pracovat pod různými operačními systémy,

Měl by být relační, spolehlivý, stabilní a dobře zdokumentovaný,

Měl by podporovat standard jazyka SQL,

Měl by obsahovat správu uživatelů a jejich přístupových práv,

Měl by podporovat zabezpečení dat a zabezpečené přenosy dat,

Měl by být podporován skriptovacími jazyky (PHP, ASP, PERL, atd.),

Měl by umět ukládat data v různých znakových sadách,

Měl by být rychlý, podporovat transakční zpracování dat a zálohy dat,

Měl by být podporován free i komerčními webhostingy.

Page 106: TVORBA WEBOVÝCH STRÁNEK

Požadavky na databázový systémPožadavky na databázový systém

Transakční zpracování – složitější manipulace s daty se převede na

posloupnost operací a platí, že se buď všechny operace provedou

úspěšně a nebo se neprovedou vůbec (podobně jako u bankomatu).

Víceuživatelský přístup – řízení přístupu k datům ze strany více

uživatelů či klientských aplikací. Databázový systém definuje

přístupová práva jednotlivých uživatelů či aplikací k datům a rozsah

jejich oprávnění.

Page 107: TVORBA WEBOVÝCH STRÁNEK

Požadavky na databázový systémPožadavky na databázový systém

Zotavení se z chyb a nehod – při nepředvídané události, kdy dojde

ke ztrátě údajů, musí dojít ke zotavení systému a pokračování v práci

např. ze záložní databáze.

Relační databáze – data jsou uložena v databázových tabulkách s

pevnou strukturou, mezi jednotlivými tabulkami jsou definovány relační

vztahy (vazby).

Page 108: TVORBA WEBOVÝCH STRÁNEK

Vlastnosti relační databázeVlastnosti relační databáze

Všechny údaje jsou uloženy v tabulkách.

Mezi tabulkami existují relace (vztahy).

Fyzická struktura údajů a způsob jejich uložení jsou nezávislé

na uživatelích.

Pro práci s údaji v databázi existuje standardizovaný databázový

jazyk.

Page 109: TVORBA WEBOVÝCH STRÁNEK

Model databázové tabulkyModel databázové tabulky

Page 110: TVORBA WEBOVÝCH STRÁNEK

Model databázové tabulkyModel databázové tabulky

Sloupce - určují typ dat, který do něj (do jednotlivých řádků) můžeme

vložit. Sloupce bývají také občas nazývány atributy.

Řádky - jsou to jednotlivé záznamy v tabulce, které bývají

identifikovány pomocí primárního klíče.

Primární klíč – je to sloupec, který nemá v žádném řádku duplicitní

(stejnou) hodnotu, tedy veškeré hodnoty sloupce jsou unikátní (např.

osobní číslo pracovníka, rodné číslo, kód zboží, atd.). Umožňuje

jednoznačnou identifikaci určitého záznamu (nezbytné pro vytváření

vazeb mezi tabulkami a jejich záznamy).

Page 111: TVORBA WEBOVÝCH STRÁNEK

RelaceRelace

Mezi jednotlivými tabulkami existují tzv. relace (vazby), které vytvářejí

vztahy mezi sloupci. Můžeme tak jednoduše propojit tabulky mezi sebou.

čtenáři

knihy

výpůjčka

Page 112: TVORBA WEBOVÝCH STRÁNEK

Databázový systém MySQLDatabázový systém MySQL

součást programového balíku WAMP server,

k dispozici pro mnoho platforem (např. Windows, Linux, atd.),

relační typ databáze, podporuje transakce, zabezpečený přístup,

pro nekomerční využití zdarma,

100% podpora v PHP,

použit u většiny neplacených i placených hostingů webových stránek,

dobře zdokumentovaný, odladěný, stabilní a rychlý.

Page 113: TVORBA WEBOVÝCH STRÁNEK

Programový prostředek phpMyAdminProgramový prostředek phpMyAdmin

součást programového balíku WAMP server,

umožňuje jednoduchou a přehlednou komplexní správu databází

databázového systému MySQL (struktura i data) prostřednictvím

webového prohlížeče,

není potřeba znát SQL příkazy,

lze vytvořit zabezpečený přístup jednotlivých administrátorů databází,

strukturu databáze včetně dat lze exportovat do textového souboru

(přenos a záloha databáze),

nastavení se nachází v konfiguračním souboru config.inc.php.

Page 114: TVORBA WEBOVÝCH STRÁNEK

Spojení s databázovým serveremSpojení s databázovým serverem

PHP obsahuje předdefinované funkce pro komunikaci s databázovým

systémem MySQL.

$spojeni = mysql_connect("adresa_db_serveru", "login", "heslo");

Ukázka použití PHP funkce:

$spojeni = mysql_connect("localhost", "root", "");

$spojeni = mysql_connect("127.0.0.1", "root", "mojeheslo");

$spojeni = mysql_connect("mysql.wz.cz", "r058", "tom7723");

Přihlašovací údaje obdržíte po registraci webhostingu od provozovatele.

Page 115: TVORBA WEBOVÝCH STRÁNEK

Spojení s databázovým serveremSpojení s databázovým serverem

Spojení s databází:

mysql_select_db("nazev_databaze");

Ukončení spojení s databázovým serverem:

mysql_close($spojeni);

je vhodné spojení a zrušení spojení s databázovým serverem realizovat

v externím skriptu a ten pak pomocí příkazu include vložit do příslušných

souborů webové prezentace.

Výhoda: při změně parametrů spojení, změna pouze na jednom místě.

Page 116: TVORBA WEBOVÝCH STRÁNEK

Spojení s databázovým serveremSpojení s databázovým serverem

<?php

function connect_db()

{

$spojeni = mysql_connect("localhost", "root", "");

mysql_select_db("nazev_databaze");

mysql_query("SET CHARACTER SET cp1250"); // volba cp1250 popř. utf8

return $spojeni;

}

function close_db($spojeni)

{

mysql_close($spojeni);

}

?> databaze.php

Page 117: TVORBA WEBOVÝCH STRÁNEK

Spojení s databázovým serveremSpojení s databázovým serverem

V úvodu příslušného souboru webové stránky nejprve vložíme tento

externí skript (pokud jsou oba soubory ve stejném adresáři, napíšeme

pouze jeho název):

include "databaze.php";

Poté navážeme spojení na příslušném místě webové stránky:

$db = connect_db();

Po ukončení práce s databází toto spojení opět zrušíme:

close_db($db);

Page 118: TVORBA WEBOVÝCH STRÁNEK

Komunikace s databází z PHP skriptuKomunikace s databází z PHP skriptu

$id_vysledek = mysql_query("příkaz jazyka SQL");

Proměnná $id_vysledek obsahuje identifikátor výsledku dotazu do

databáze. Dotazů může být v rámci jednoho spojení s databází více,

každý má svůj jedinečný identifikátor, podle něhož se zpracují výsledky.

Příklad použití PHP funkce:

$dotaz1 = "SELECT * FROM uzivatel WHERE plat > '10000' ";

$dotaz2 = "SELECT * FROM knihy WHERE titul = '".$_POST["nazev"]."' ";

$id_vysledek = mysql_query($dotaz1);

Page 119: TVORBA WEBOVÝCH STRÁNEK

Komunikace s databází z PHP skriptuKomunikace s databází z PHP skriptu

Typický PHP skript pracující s databází dodržuje následující postup:

1.PHP kód, který se postará o připojení k databázi,

2.SQL příkazy srozumitelné databázového systému, kterými

specifikujeme, co chceme s databází (strukturou, daty) provést,

3.PHP kód, který zpracuje odpověď od databázového systému,

4.PHP kód, který uzavře spojení z databází.

Page 120: TVORBA WEBOVÝCH STRÁNEK

Příkazy SQL jazykaPříkazy SQL jazyka

SQL, neboli strukturovaný dotazovací jazyk je jazyk, kterému rozumí

databáze. Pomocí příkazů SQL jazyka lze:

vytvářet / rušit databázi

vytvářet, modifikovat, rušit databázové tabulky

vyhledávat (vybírat, dolovat) záznamy a jejich data z databáze dle

zadaných omezujících (filtračních) podmínek.

vkládat, měnit, odstraňovat záznamy a jejich části v databázi

Page 121: TVORBA WEBOVÝCH STRÁNEK

Příkazy SQL jazykaPříkazy SQL jazyka

Typ příkazů Popis Příkazy

DefiničníUmožňují spravovat strukturu databáze

CREATE TABLE,DROP TABLE

VýběrovéUmožňují získat data z databáze

SELECT

PřidávacíUmožňují přidávat nová data do tabulek

INSERT

AktualizačníUmožňují měnit existující data v databázi

UPDATE, REPLACE

OdstraňovacíUmožňují smazat záznamy (řádky) z databáze

DELETE

Page 122: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz SELECTSQL příkaz SELECT

Slouží k výběru dat z databáze. Nejjednodušší tvar příkazu:

SELECT * FROM zamestnanci

Význam: Vyber všechna data z tabulky „zamestnanci“. Hvězdička říká, že

vybíráme všechny sloupce (všechny atributy záznamu).

Místo hvězdičky lze napsat seznam sloupců, které nás zajímají. Ostatní

sloupce nás nezajímají a ve výsledných datech nebudou zahrnuty:

SELECT jmeno, telefon FROM zamestnanci

Page 123: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz SELECTSQL příkaz SELECT

Výsledná data mohou být setříděna podle určitých kritérií.

Takto lze získat seznam zaměstnanců se jménem, příjmením a výší jejich

platu setříděné podle velikosti platu (vzestupně):

SELECT jmeno, prijmeni, plat FROM zamestnanci ORDER BY plat

Je-li potřeba data třídit sestupně:

SELECT jmeno, prijmeni, plat FROM zamestnanci ORDER BY plat DESC

Page 124: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz SELECTSQL příkaz SELECT

Výběr dat z tabulky lze omezit (filtrovat) stanovením podmínky za klíčové

slovo WHERE:

SELECT * FROM zamestnanci WHERE prijmeni = 'Novák'

SELECT * FROM zamestnanci WHERE plat > '10000'

Pro hledání záznamů vyhovujících určitému vzoru používáme klíčové

slovo LIKE. Následující SQL příkaz vybere záznamy všech zaměstnanců,

jejichž telefonní číslo začíná trojčíslím „608“:

SELECT * FROM zamestnanci WHERE telefon LIKE '608%'

Page 125: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz SELECTSQL příkaz SELECT

Pro filtrování záznamů z databáze lze za WHERE stanovit více podmínek,

které se spojují pomocí logických operátorů OR a AND:

SELECT * FROM zamestnanci WHERE plat < '20000' OR praxe < '2'

SELECT * FROM knihy WHERE sklad > '0' AND zanr = 'scifi'

Vybere z databázové tabulky „knihy“ záznamy knih, které jsou

momentálně na skladě alespoň jedním kusem a zároveň odpovídají sci-fi

žánru. Vyhovující záznamy budou setříděny vzestupně podle názvu (A-Z):

SELECT * FROM knihy WHERE sklad > '0' AND zanr = 'scifi' ORDER BY nazev

Page 126: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz SELECTSQL příkaz SELECT

Při velkém množství vyhovujících záznamů (např. tisíce) je nevhodné

jejich zpracování a případný výpis v prohlížeči najednou. Pomocí

klíčového slova LIMIT lze omezit počet vrácených záznamů.

Příkaz vrátí prvních 10 vyhovujících záznamů:

SELECT * FROM osoby LIMIT 10

Lze tedy vytvářet listované seznamy záznamů, kdy na první stránce

budou vyhovující záznamy prvních 20 osob (záznamy se číslují od 0!!!):

SELECT * FROM osoby LIMIT 0, 20

Na druhé stránce dalších 20 osob (atd.):

SELECT * FROM osoby LIMIT 20, 20

Page 127: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz INSERTSQL příkaz INSERT

Slouží k vložení nového záznamu (řádky) do databázové tabulky. Obecný

zápis SQL příkazu INSERT:

INSERT INTO tabulka (seznam sloupců) VALUES (seznam hodnot)

Příklad použití:

INSERT INTO osoby(jmeno, prijmeni, telefon)

VALUES ('Pavel', 'Chmiel', '603111222')

Místo statických hodnot lze uvést proměnnou, obsahující danou hodnotu:

$dotaz = mysql_query("INSERT INTO osoby (jmeno, prijmeni, telefon, plat)

VALUES (' ".$_POST["jmeno"]." ', ' ".$prijmeni." ', ' ".$tel." ', '20000')");

Page 128: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz SQL příkaz DELETEDELETE

Slouží k mazání celých záznamů (řádků) z databázové tabulky.

Výmaz všech záznamů v databázové tabulce „zamestnanci“:

DELETE FROM zamestnanci

Výmaz vybraných záznamů v databázové tabulce „zamestnanci“:

DELETE FROM zamestnanci WHERE rodne_cislo = '550908/1111'

DELETE FROM zamestnanci WHERE telefon LIKE '608%'

V SQL příkazu DELETE lze použít i klíčová slova LIMIT a ORDER BY:

DELETE FROM zamestnanci LIMIT 10 ORDER BY prijmeni

Bez ORDER BY však není jasné, kterých 10 záznamů bude odstraněno!

Page 129: TVORBA WEBOVÝCH STRÁNEK

SQL příkaz UPDATESQL příkaz UPDATE

Slouží ke změně (aktualizaci) dat u existujících záznamů v databázové

tabulce. Obecný tvar příkazu:

UPDATE tabulka SET sloupec1='hodnota1', sloupec2='hodnota2'…

Změna hodnoty vybraných sloupců ve všech řádcích na stejnou hodnotu:

UPDATE ucitel SET plat='25000', tridni_ucitel='ano'

Změna hodnoty u vybraných řádků tabulky dle zadané podmínky:

UPDATE knihy SET cena='250', skladem='ano' WHERE kod='112233'

UPDATE osoby SET mesto='Havířov' WHERE telefon LIKE '596%'

Page 130: TVORBA WEBOVÝCH STRÁNEK

Zpracování výsledků dotazu do databázeZpracování výsledků dotazu do databáze

$pocet = mysql_num_rows($id_vysledek);

Funkce slouží ke zjištění, kolik řádků (vyhovujících záznamů) jsme

obdrželi na dotaz typu SELECT.

Argumentem (vstupem) funkce je identifikátor výsledku, který vrací funkce

mysql_query("SQL dotaz typu SELECT").

$dotaz = "SELECT * FROM zamestnanec WHERE plat > '10000' ";

$id_vysledek = mysql_query($dotaz);

// vypíše počet zaměstnanců (záznamů) s platem nad 10000 Kč

echo mysql_num_rows($id_vysledek);

Page 131: TVORBA WEBOVÝCH STRÁNEK

Zpracování výsledků dotazu do databázeZpracování výsledků dotazu do databáze

$zaznam = mysql_fetch_array($id_vysledek);

Funkce vrací pole hodnot vyhovujících záznamů z databázové tabulky

nebo hodnotu false, došlo-li k načtení všech záznamů, popř. nevyhovuje

žádný záznam z tabulky.

Argumentem (vstupem) funkce je identifikátor výsledku, který vrací funkce

mysql_query("SQL dotaz typu SELECT").

Hodnoty vyhovujících záznamů jsou postupně načítány do proměnné typu

pole, kdy indexy pole odpovídají názvům sloupců z databázové tabulky.

Jelikož vyhovujících záznamů může být více, použijeme cyklus WHILE.

Page 132: TVORBA WEBOVÝCH STRÁNEK

Zpracování výsledků dotazu do databázeZpracování výsledků dotazu do databáze

$dotaz = "SELECT jmeno, plat FROM zamestnanec WHERE plat > '10000' ";

$id_vysledek = mysql_query($dotaz);

// vypíše jména a výši platu zaměstnanců s platem nad 10000 Kč

while($zaznam = mysql_fetch_array($id_vysledek)):

echo "Zaměstnanec jménem ".$zaznam['jmeno']." má plat ".$zaznam['plat'];

echo "<br />";

endwhile;

Page 133: TVORBA WEBOVÝCH STRÁNEK

Zpracování výsledků dotazu do databázeZpracování výsledků dotazu do databáze

$dotaz = "SELECT * FROM administrators WHERE login = 'chmiel1234' ";

$id_vysledek = mysql_query($dotaz);

$zaznam = mysql_fetch_array($id_vysledek)

echo "Přihlášený administrátor: ".$zaznam['jmeno']." ".$zaznam['prijmeni'];

Pokud je jisté, že vyhovující záznam bude pouze jeden (např. při

ověřování loginu a hesla uživatele), není potřeba používat cyklus

WHILE. Je-li sloupec login primárním klíčem, je jisté, že se zde

hodnoty neopakují a vyhovuje maximálně 1 záznam.

Page 134: TVORBA WEBOVÝCH STRÁNEK

Konec modulu TWS_04

Děkuji Vám za pozornost.