TVORBA WEBOVÝCH STRÁNEK
description
Transcript of 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
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
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.
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ů.
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
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
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
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
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.
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) !!!
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 !!!
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 (", ', $, \)
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>";
?>
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ář
?>
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.
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)
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
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
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
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
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
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
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
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
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…
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é).
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ě.
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"]
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
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)
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>
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"];
?>
formular.htm
vypis.php
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.
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>
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"];
?>
formular.htm
vypis.php
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>
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.
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č
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.
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
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)
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:
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 ( ).
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:
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
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.
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.
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";
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;
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:
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.
}
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.
}
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.
}
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.
}
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.
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).
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; ?>
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 } ?>
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).
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.
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;
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.
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.
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!
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é.
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 />";
}
Cyklus FORCyklus FOR
$RajskySalat = array("rajče", "cibule", "sůl", "cukr", "pepř");
for ($i = 0; $i < count($RajskySalat); ++$i)
echo $RajskySalat [$i]."<br />";
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>
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.
Cyklus FOREACHCyklus FOREACH
$RajskySalat = array("rajče", "cibule", "sůl", "cukr", "pepř");
foreach ($RajskySalat as $ingredience)
echo "$ingredience <br />";
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 />";
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 />";
}
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 />";
}
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.
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.
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";
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
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.
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)
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.
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
?>
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")
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
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
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
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
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.
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).
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");
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
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ý
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
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>
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
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
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).
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);
?>
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
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
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.
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.
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í.
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).
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.
Model databázové tabulkyModel databázové tabulky
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).
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
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ý.
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.
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.
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ě.
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
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);
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);
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í.
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
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
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
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
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%'
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
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
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')");
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!
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%'
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);
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.
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;
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.
Konec modulu TWS_04
Děkuji Vám za pozornost.