Upload
shay
View
61
Download
0
Embed Size (px)
DESCRIPTION
Základy programování v PHP. RNDr. Pavel Vlach, Ph.D. PHP – k čemu to je?. skriptovací jazyk pro tvorbu dynamického webu internetové obchody podnikové informační systémy (ať už intranetové nebo internetové) diskusní fóra redakční systémy firemní prezentace dynamické osobní stránky - PowerPoint PPT Presentation
Citation preview
Základy programování v PHPZáklady programování v PHP
RNDr. Pavel Vlach, Ph.D.RNDr. Pavel Vlach, Ph.D.
PHP – k čemu to je?PHP – k čemu to je?
• skriptovací jazyk pro tvorbu dynamického webu skriptovací jazyk pro tvorbu dynamického webu – internetové obchody internetové obchody – podnikové informační systémy (ať už intranetové nebo podnikové informační systémy (ať už intranetové nebo
internetové) internetové) – diskusní fóra diskusní fóra – redakční systémy redakční systémy – firemní prezentace firemní prezentace – dynamické osobní stránky dynamické osobní stránky – weboví poštovní či databázoví klienti weboví poštovní či databázoví klienti – vyhledávače a katalogy vyhledávače a katalogy – drobnosti typu počitadla, ankety a mnoho dalších drobnosti typu počitadla, ankety a mnoho dalších
Jak to funguje?Jak to funguje?
• PHP kód se zapisuje v textovém tvaruPHP kód se zapisuje v textovém tvaru• PHP interpret (běžícím na webovém serveru) PHP interpret (běžícím na webovém serveru)
kód překládá a posílá do klienta (prohlížeče) kód překládá a posílá do klienta (prohlížeče) hotový html kódhotový html kód
• skripty (podobně jako .asp) narozdíl od skripty (podobně jako .asp) narozdíl od JavaScriptu provádí serverJavaScriptu provádí server
• nezatěžuje vlastní počítač – náročný na nezatěžuje vlastní počítač – náročný na komunikaci se serveremkomunikaci se serverem
• př. webový server nejprve spočítá kolik př. webový server nejprve spočítá kolik 300/30 a pak prohlížeči odešle jen číslo 10300/30 a pak prohlížeči odešle jen číslo 10
Co se naučíme?Co se naučíme?
• syntaxi a základy jazyka PHPsyntaxi a základy jazyka PHP• používání proměnných a různých datových typůpoužívání proměnných a různých datových typů• větvení programů a cyklyvětvení programů a cykly• práce se souborypráce se soubory• zpracování formulářových datzpracování formulářových dat• spolupráce s MySQLspolupráce s MySQL• příkladypříklady
– diskuzní fórumdiskuzní fórum– základy redakčních systémůzáklady redakčních systémů– on-line přihlašovací formulářon-line přihlašovací formulář
Co budeme potřebovat?Co budeme potřebovat?
• kompetence v oblasti tvorby HTML stránekkompetence v oblasti tvorby HTML stránek
• webový server (Apache s technologií PHP)webový server (Apache s technologií PHP)• textový procesor (PSPad, Pozn. blok)textový procesor (PSPad, Pozn. blok)
• hodně času a chutihodně času a chuti
1. princip funkce PHP1. princip funkce PHP
a)a) historie PHP a htmlhistorie PHP a html
b)b) ještě jednou jak to fungujeještě jednou jak to funguje
b) jak se to spojí s htmlb) jak se to spojí s html
Historie a skriptovací jazykyHistorie a skriptovací jazyky
• první stránky první stránky statickéstatické – nereagovaly, nebyly – nereagovaly, nebyly interaktivníinteraktivní
• dynamické stránky - reagují na tlačítka a dynamické stránky - reagují na tlačítka a myš, zpracovávají data zadávaná uživatelem, myš, zpracovávají data zadávaná uživatelem, zobrazované informace se mění apod.zobrazované informace se mění apod.
• dynamické stránky lze rozdělit do dvou dynamické stránky lze rozdělit do dvou skupin:skupin:– klientskéklientské– serverovéserverové
klientské scriptovací jazykyklientské scriptovací jazyky
• Spolu s HTML stránkou je prohlížeči odeslán Spolu s HTML stránkou je prohlížeči odeslán i programový kód a ten je ve vhodnou chvíli i programový kód a ten je ve vhodnou chvíli na "cílovém" počítači spuštěnna "cílovém" počítači spuštěn
• při kliknutí na tlačítko, při najetí myší na při kliknutí na tlačítko, při najetí myší na odkaz, při otevření okna prohlížeče a odkaz, při otevření okna prohlížeče a podobněpodobně
• O spuštění klientského kódu se stará O spuštění klientského kódu se stará prohlížeč - a to může být nevýhoda - musí prohlížeč - a to může být nevýhoda - musí znát programovací jazykznát programovací jazyk
• JavaScriptJavaScript
serverové scriptovací jazykyserverové scriptovací jazyky
• prohlížeč požaduje webovou stránku ze prohlížeč požaduje webovou stránku ze serveru - server tuto stránku nejprve sestaví serveru - server tuto stránku nejprve sestaví a pak odešlea pak odešle
• Servery sestavují pokaždé jinou stránku v Servery sestavují pokaždé jinou stránku v závislosti na tom, co přesně prohlížeč závislosti na tom, co přesně prohlížeč požaduje požaduje
• php, aspphp, asp
Jak vypadá php script?Jak vypadá php script?
• obsahuje jednak kusy normálního HTML kódu, a obsahuje jednak kusy normálního HTML kódu, a jednak kusy programového kódu. Když webový jednak kusy programového kódu. Když webový server obdrží požadavek na zpracování takového server obdrží požadavek na zpracování takového skriptu, vezme: skriptu, vezme: – kusy HTML kódu tak, jak jsou kusy HTML kódu tak, jak jsou – části PHP programového kódu provede části PHP programového kódu provede – výsledek zkombinuje a odešle prohlížeči výsledek zkombinuje a odešle prohlížeči
• Server totiž výsledek posílá do prohlížeče jako Server totiž výsledek posílá do prohlížeče jako obyčejnou HTML stránkuobyčejnou HTML stránku
• zapsaný kód v editoru vypadá jinak než po zobrazení zapsaný kód v editoru vypadá jinak než po zobrazení „zdrojového kódu“ v prohlížeči„zdrojového kódu“ v prohlížeči
ukázka zápisu prosté html ukázka zápisu prosté html stránkystránky
• prostý html zápis (bez validní struktury, ale v prostý html zápis (bez validní struktury, ale v prholížeči tento zápis „projde“)prholížeči tento zápis „projde“)
ukázka zápisu se včleněným php ukázka zápisu se včleněným php kódemkódem
• zápis kódu v editoruzápis kódu v editoru• zobrazení prohlížečizobrazení prohlížeči• výpis zdrojového kódu v prohlížečivýpis zdrojového kódu v prohlížeči• všimněte si adresy v okně prohlížečevšimněte si adresy v okně prohlížeče
adresa
Jak to, že se liší kód v editoru Jak to, že se liší kód v editoru a kód v prohlížeči?a kód v prohlížeči?
• Prohlížeč „neví“, co všechno se na serveru Prohlížeč „neví“, co všechno se na serveru dělo než mu byl výstup odeslándělo než mu byl výstup odeslán
• prohlížeč (a tedy i ten, kdo si chce přečíst prohlížeč (a tedy i ten, kdo si chce přečíst kód v pohlížeči) vidí jen samotný výsledekkód v pohlížeči) vidí jen samotný výsledek
• na serveru se mohla dít celá řada věcí:na serveru se mohla dít celá řada věcí:– matematické výpočtymatematické výpočty– přístupy k databázímpřístupy k databázím– formátováníformátování– operace s řetězci a další taškařice operace s řetězci a další taškařice
závěrečné shrnutízávěrečné shrnutí
1.1. skript musí být "prohnán" serveremskript musí být "prohnán" serverem- otevřením v textovém editoru nebo si ho otevřením v textovém editoru nebo si ho
prohlédnete jako soubor na disku, neuvidíte prohlédnete jako soubor na disku, neuvidíte výsledekvýsledek, ale , ale zdrojový kódzdrojový kód skriptu skriptu
- plést se může zejména tehdy, když máte PHP plést se může zejména tehdy, když máte PHP skript na vlastním počítači - PHP soubor skript na vlastním počítači - PHP soubor proženete serverem tak, že se na něj zeptáte proženete serverem tak, že se na něj zeptáte prohlížeče pomocí adresy url. Například pomocí prohlížeče pomocí adresy url. Například pomocí http://localhost/skript.php http://localhost/skript.php
závěrečné shrnutízávěrečné shrnutí
2. PHP skripty nejsou závislé na prohlížeči2. PHP skripty nejsou závislé na prohlížeči3. integrace PHP do html pomocí speciálních značek:3. integrace PHP do html pomocí speciálních značek:
- celý soubor může být jeden dlouhý PHP kód. - celý soubor může být jeden dlouhý PHP kód. - kód PHP je na jednom určitém místě - kód PHP je na jednom určitém místě - v souboru je více místo obsahující PHP kód - v souboru je více místo obsahující PHP kód - soubor se tváří jako php skript, ale ve skutečnosti je to - soubor se tváří jako php skript, ale ve skutečnosti je to normální HTML soubor a PHP kód v něm vůbec nenínormální HTML soubor a PHP kód v něm vůbec není
4. výsledkem PHP skriptu je normální HTML stránka – 4. výsledkem PHP skriptu je normální HTML stránka – nepouštějte se do práce v PHP, pokud alespoň nepouštějte se do práce v PHP, pokud alespoň zběžně neznáte HTMLzběžně neznáte HTML
5. k dispozici musí být webový server5. k dispozici musí být webový server
doporučená literaturadoporučená literatura
• Jiří KosekJiří KosekPHPPHPtvorba interaktivních tvorba interaktivních internetových aplikacíinternetových aplikacíGrada Publishing 1999Grada Publishing 1999, , 492 stran492 stranISBN 80-7169-373-1ISBN 80-7169-373-1
• stará, ale dobrástará, ale dobrá• různé webové kurzyrůzné webové kurzy• www.php.netwww.php.net
webový server a jeho instalacewebový server a jeho instalace
apacheapache
phpphp
mySQLmySQL
jak na instalaci?jak na instalaci?
• instalace a přená konfigurace webového instalace a přená konfigurace webového serveru Apache a následně spuštění serveru Apache a následně spuštění technologií php a mySQL může být velmi technologií php a mySQL může být velmi obtížnáobtížná
• pro začátek (v rámci celého kurzu vystačíme) pro začátek (v rámci celého kurzu vystačíme) lze nainstalovat celý balíček výše zmíněných lze nainstalovat celý balíček výše zmíněných serverů a aplikacíserverů a aplikací
• odkazy na 3v1 instalace:odkazy na 3v1 instalace:www.kosek.czwww.kosek.czwww.linuxsoft.czwww.linuxsoft.cz
Vertrigo serverVertrigo server
• stabilní, většinou bezproblémová stabilní, většinou bezproblémová instalaceinstalace
• nabízí Apache, PHP4 a mySQLnabízí Apache, PHP4 a mySQL• možnosti konfigurace v rozbalovací možnosti konfigurace v rozbalovací
lištěliště• první volba umožňuje restart a první volba umožňuje restart a
vypnutí serveruvypnutí serveru• v liště Tools je k dispozici v liště Tools je k dispozici
phpMyAdmin phpMyAdmin • Settings umožňují základní Settings umožňují základní
konfiguracikonfiguraci
Vertrigo serverVertrigo server
ÚkolÚkol
• na ploše je umístěn zástupce serveru na ploše je umístěn zástupce serveru VertrigoVertrigo
• spusťte jej a pozorujte změny na panelu spusťte jej a pozorujte změny na panelu nástrojůnástrojů
• spusťte konfigurační programspusťte konfigurační program
Vertrigo serverVertrigo server
• pro naše účely stačí základní konfiguracepro naše účely stačí základní konfigurace• složka, ve které budou interpretovány php scripty složka, ve které budou interpretovány php scripty
má tuto cestu:má tuto cestu:C:/Program Files/VertrigoServ/wwwC:/Program Files/VertrigoServ/www
• v prohlížeči se příslušný soubor zobrazí, pokud v prohlížeči se příslušný soubor zobrazí, pokud zadáte:zadáte:
http://localhost/http://localhost/
příklad:příklad:C:/Program Files/VertrigoServ/www/zdroje/pokus.phpC:/Program Files/VertrigoServ/www/zdroje/pokus.php
bude interpretován v prohlížeči pokud zadáte:bude interpretován v prohlížeči pokud zadáte:http://localhost/zdroje/pokus.phphttp://localhost/zdroje/pokus.php
základní syntaxe jazyka phpzákladní syntaxe jazyka php
implementace php do htmlimplementace php do html
syntaxesyntaxe
komentářekomentáře
vložení php do htmlvložení php do html
• tři způsoby vložení php scriptutři způsoby vložení php scriptu<? <? [PHP kód][PHP kód] ?> ?>
<?php <?php [PHP kód][PHP kód] ?> ?>
<SCRIPT LANGUAGE="php"> php <SCRIPT LANGUAGE="php"> php
[PHP kód][PHP kód]
</SCRIPT></SCRIPT>
• doporučuji druhý způsobdoporučuji druhý způsob• budeme používat první způsob budeme používat první způsob
vložení php do htmlvložení php do html
syntaxe phpsyntaxe php
• všechny datové strukturyvšechny datové struktury– příkazypříkazy– deklaracedeklarace– funkcefunkce
• musí být odděleny středníkemmusí být odděleny středníkem• pokud se objeví při zobrazení stránky chyba pokud se objeví při zobrazení stránky chyba
Parse Error,Parse Error, většinou někde chybí středník většinou někde chybí středník• nezáleží na počtu mezer nebo řádek za nezáleží na počtu mezer nebo řádek za
středníkemstředníkem
syntaxe phpsyntaxe php
• tohle hlásí chybutohle hlásí chybu
• tohle fungujetohle funguje
komentářekomentáře
• komentáře jsou úseky kódu, které server ani komentáře jsou úseky kódu, které server ani prohlížeč nezobrazuje, resp. nezpracováváprohlížeč nezobrazuje, resp. nezpracovává
• slouží ke zvýšení přehlednosti kóduslouží ke zvýšení přehlednosti kódu• naučme se je používat hned, později to bude naučme se je používat hned, později to bude
automatickéautomatické• u rozsáhlejších programů nezbytnou u rozsáhlejších programů nezbytnou
podmínkoupodmínkou
komentářekomentáře
• jednořádkový komentář začíná dojicí znaků jednořádkový komentář začíná dojicí znaků //// (lomítko) nebo znakem (lomítko) nebo znakem ## (Alt Gr+X) (Alt Gr+X)
• dvouřádkový komentář začíná dvouřádkový komentář začíná /*/* (lomítko, hvězdička) (lomítko, hvězdička) a končí opačně, tj. a končí opačně, tj. */*/
výpis na obrazovkuvýpis na obrazovku
echo ();echo ();
print();print();
formátování a escape sekvenceformátování a escape sekvence
echo ();echo ();
• tento příkaz vypíše obsah proměnné, řetězec, tento příkaz vypíše obsah proměnné, řetězec, číslo, html tag….číslo, html tag….
• možné zápisy:možné zápisy:echo (echo (““Hello world“);Hello world“);
echo ($promenna);echo ($promenna);
echo (echo (““<strong>odstavec</strong>“);<strong>odstavec</strong>“);
echo – příklady kódůecho – příklady kódů
echo – „zlobivé“ znakyecho – „zlobivé“ znaky
• zvláštní formátování mají znaky zvláštní formátování mají znaky ““, \, <, $, \, <, $• před nimi se používá znaku \před nimi se používá znaku \• používá se hlavně při formátování html tagůpoužívá se hlavně při formátování html tagů• těmto znakům se říká „escape sekvence“těmto znakům se říká „escape sekvence“
escape sekvenceescape sekvence
escape sekvence – ještě jednouescape sekvence – ještě jednou
jak jinak na uvozovky?jak jinak na uvozovky?
úkolúkol
• s použitím příkazu echo(), escape sekvencí a s použitím příkazu echo(), escape sekvencí a html tagů <div> <strong> <em> <a> <h2>html tagů <div> <strong> <em> <a> <h2>
• napište v PSPadu php script, který zobrazí v napište v PSPadu php script, který zobrazí v okně prohlížeče tento text:okně prohlížeče tento text:
• výsledek uložte do vaší složkyvýsledek uložte do vaší složky
proměnnéproměnné
druhy proměnnýchdruhy proměnných
datové typydatové typy
operátoryoperátory
proměnnáproměnná
• programovací jazyk pracuje s hodnotamiprogramovací jazyk pracuje s hodnotami• hodnoty se ukládají do proměnnýchhodnoty se ukládají do proměnných• proměnná má:proměnná má:
– název (uvozený znakem $)název (uvozený znakem $)– hodnotouhodnotou
• hodnota proměnné v programu jednoznačně hodnota proměnné v programu jednoznačně danádaná
• během programu se však může měnitběhem programu se však může měnit
typy proměnnýchtypy proměnných
• php automaticky po přiřazení hodnoty vybere php automaticky po přiřazení hodnoty vybere vhodný datový typvhodný datový typ$zapnuto=true //typ boolean$zapnuto=true //typ boolean
$nazev=$nazev=““aleš“ //typ stringaleš“ //typ string
proměnné typy a trikyproměnné typy a triky
• jednopísmenné názvy ne – po týdnu nevím, co je jednopísmenné názvy ne – po týdnu nevím, co je proměnná $d a $g ?proměnná $d a $g ?
• příliš dlouhé názvy také ne – zápis jde a snadněji se příliš dlouhé názvy také ne – zápis jde a snadněji se udělá chyba udělá chyba
• používejte sebepopisující názvy, jeden jazyk používejte sebepopisující názvy, jeden jazyk – četina bez hacku a carekčetina bez hacku a carek– angličtinaangličtina
• používejte velbloudí notaci – pro přehlednost používejte velbloudí notaci – pro přehlednost vkládejte do názvu proměnné velká písmena:vkládejte do názvu proměnné velká písmena:$PopisTabulky$PopisTabulky$FindCursorPosition$FindCursorPosition$MoveCursor$MoveCursor
operátoryoperátory
• běžné operátoryběžné operátory• podobná syntaxe podobná syntaxe
jako v jazyce C++jako v jazyce C++• řetězce spojujeme řetězce spojujeme
pomocí tečky (.)pomocí tečky (.)
příklad 1příklad 1
příklad 2příklad 2
úkolúkol
• vytvořte script, který bude kombinovat příkaz vytvořte script, který bude kombinovat příkaz echo a proměnné různých typůecho a proměnné různých typů
• proveďte různé operace s proměnnými, proveďte různé operace s proměnnými, spojujte řetězce atd.spojujte řetězce atd.
• výsledek uložte do vaší složkyvýsledek uložte do vaší složky
větvení programuvětvení programu
typy podmínektypy podmínek
if …. elseif …. else
• strukturastrukturaif (výraz, podmínka) { …….. }if (výraz, podmínka) { …….. }
if (výraz, podmínka) { …….. } else { ……. }if (výraz, podmínka) { …….. } else { ……. }
if (výraz, podmínka) { …….. } else if { ……. }if (výraz, podmínka) { …….. } else if { ……. }
else else { ……. }{ ……. }
• v závorce se testuje proměnná typu boolean v závorce se testuje proměnná typu boolean nebo jakýkoliv výraz pomocí porovnávacích nebo jakýkoliv výraz pomocí porovnávacích operátorůoperátorů
if – příklad 1if – příklad 1
if - příklad 2if - příklad 2
podmínky - tipy a trikypodmínky - tipy a triky
• bez podmínek se neobejdete. Naučte se je. Z hlavy.bez podmínek se neobejdete. Naučte se je. Z hlavy.příkaz v některé větvi podmínky může být zase příkaz v některé větvi podmínky může být zase podmínka. podmínka. Vnořené podmínkyVnořené podmínky jsou někdy potřeba, jsou někdy potřeba, ale mohou pěkně znepřehlednit kód. ale mohou pěkně znepřehlednit kód.
• Zvažte použití větve Zvažte použití větve elseelse v podmínce vždy, když si v podmínce vždy, když si nejste absolutně jisti, že větve nejste absolutně jisti, že větve elseifelseif pokrývají pokrývají všechny alternativy. všechny alternativy.
• Formátujte kód tak, abyste se v něm vyznaliFormátujte kód tak, abyste se v něm vyznali• KOMENTUJTEKOMENTUJTE. Podmínky mohou být složité a za půl . Podmínky mohou být složité a za půl
roku, když budete potřebovat skript oprášit už roku, když budete potřebovat skript oprášit už nebudete vědět, proč jste je psali. nebudete vědět, proč jste je psali.
podmínky - úkolpodmínky - úkol
• vytvořte 3 scripty, které budou využívat vytvořte 3 scripty, které budou využívat větvení pomocí podmínky větvení pomocí podmínky if elseif if elseif aa else else
• v prvním skriptu testujte výraz typu booleanv prvním skriptu testujte výraz typu boolean• v druhém skriptu testujte číselnou v druhém skriptu testujte číselnou
proměnnou pomocí operátorů proměnnou pomocí operátorů <, >, <=, =><, >, <=, =>• ve třetím scriptu testujte řetězce pomocí ve třetím scriptu testujte řetězce pomocí
operátorů operátorů == , !=== , != a logických operátorů a logických operátorů &&&& a a ||||
• uložte do vaší složkyuložte do vaší složky
switchswitch
• nahrazuje níže uvedenou strukturu:nahrazuje níže uvedenou strukturu:if (výraz1) {…………}if (výraz1) {…………}elseif (výraz2) {…………}elseif (výraz2) {…………}elseif (výrazn) {…………}elseif (výrazn) {…………}else {…………………….}else {…………………….}
• má tento tvarmá tento tvarswitch (podmínka) {switch (podmínka) {
case výraz1:case výraz1:case výraz2:case výraz2:case výraz3:case výraz3:default:default:
}}
switch - příkladswitch - příklad
smyčky - cyklysmyčky - cykly
cyklus forcyklus for
cyklus do….whilecyklus do….while
cyklus whilecyklus while
cyklus forcyklus for
• cyklus s parametrem – víme, kolikrát cyklus cyklus s parametrem – víme, kolikrát cyklus proběhneproběhne
for ($i=1; $i<=20; $ i++) { ……. }for ($i=1; $i<=20; $ i++) { ……. }
• před započetím konkrétního cyklu se vyhodnotí před započetím konkrétního cyklu se vyhodnotí výraz druhý (zde $i<=20)výraz druhý (zde $i<=20)
• neplatí-li podmínka, cyklus se ukončíneplatí-li podmínka, cyklus se ukončí• platí-li, cyklus pokračuje dále a provede se sekvence platí-li, cyklus pokračuje dále a provede se sekvence
mezi složenými závorkamimezi složenými závorkamipo ukončení těla smyčky se provede třetí výraz (zde po ukončení těla smyčky se provede třetí výraz (zde se parametr $i zvýší o jedničkuse parametr $i zvýší o jedničku
• vše se opakujevše se opakuje
for - příkladfor - příklad
cyklus s podmínkoucyklus s podmínkou
• s podmínkou na začátku :s podmínkou na začátku :• tělo cyklu proběhne jen tehdy, je-li platná tělo cyklu proběhne jen tehdy, je-li platná
podmínkapodmínkawhile (podmínka) {…….}while (podmínka) {…….}
• s podmínkou na konci :s podmínkou na konci :• tělo cyklu proběhne vždy minimálně jednoutělo cyklu proběhne vždy minimálně jednou• opakuje se, pokud platí podmínkaopakuje se, pokud platí podmínka
do {…….} while (podmínka)do {…….} while (podmínka)
příklad - whilepříklad - while
příklad – do…whilepříklad – do…while
cykly – tipy a trikycykly – tipy a triky
• většinou jsou oblíbenější smyčky s podmínkou na většinou jsou oblíbenější smyčky s podmínkou na začátkuzačátku
• Smyčky se mohou vnořovat. Formátujte si kód Smyčky se mohou vnořovat. Formátujte si kód (=používejte tabulátor)(=používejte tabulátor)
• komentářekomentáře, zejména u delších smyček. , zejména u delších smyček. Vůbec totiž Vůbec totiž nemusí být jasné, kde smyčka začala, když je kód nemusí být jasné, kde smyčka začala, když je kód dlouhý. Komentujte konce smyček.dlouhý. Komentujte konce smyček.
• velký pozor na podmínky – použijete-li místo velký pozor na podmínky – použijete-li místo porovnávacího operátoru (==) operátor přiřazení (=) porovnávacího operátoru (==) operátor přiřazení (=) celý skript se zablokuje – vytvořili jste nekonečnou celý skript se zablokuje – vytvořili jste nekonečnou smyčku…..smyčku…..
proměnná typu poleproměnná typu pole
jednorozměrné polejednorozměrné pole
vícerozměrné polevícerozměrné pole
k čemu pole?k čemu pole?
• do jedné proměnné můžeme uložit indexová do jedné proměnné můžeme uložit indexová datadata
• např: dny v týdnu, seznamynapř: dny v týdnu, seznamy$DenvTydnu[1]=“pondělí“;$DenvTydnu[1]=“pondělí“;$DenvTydnu[2]=“úterý“;$DenvTydnu[2]=“úterý“;$DenvTydnu[7]=“neděle“;$DenvTydnu[7]=“neděle“;
• lze použít asociativní pole:lze použít asociativní pole:$PocetObyvatel[$PocetObyvatel[““Blovice“]=4005;Blovice“]=4005;$PocetObyvatel[$PocetObyvatel[““Habří“]=0;Habří“]=0;
definice poledefinice pole
• výčtem (viz předchozí strana)výčtem (viz předchozí strana)• funkcí Arrayfunkcí Array
$Pracovni Tym= Array ($Pracovni Tym= Array (“Ludva”,”“Ludva”,”Gita“,“Adolf“,“Čeněk“);Gita“,“Adolf“,“Čeněk“);
• POZOR! indexuje se standardně od nulyPOZOR! indexuje se standardně od nuly
$Mesta = Array(1=>“Blovice“, 2=>“Nepomuk“, 3=>“Měčín“);$Mesta = Array(1=>“Blovice“, 2=>“Nepomuk“, 3=>“Měčín“);
vícerozměrné polevícerozměrné pole
funkcefunkce
matematické funkcematematické funkceřetězcové funkceřetězcové funkce
funkce pro práci s polifunkce pro práci s polivlastní funkcevlastní funkce
funkcefunkce
• předdefinovaný (uživatelem nebo předdefinovaný (uživatelem nebo standardně) úsek kódu, který vykonává standardně) úsek kódu, který vykonává nějakou činnost nebo vrací hodnotunějakou činnost nebo vrací hodnotu
• rozlišujeme procedury a vlastní funkcerozlišujeme procedury a vlastní funkce– proceduraprocedura - úsek kódu, který vykonává nějakou - úsek kódu, který vykonává nějakou
sekvenci příkazůsekvenci příkazů– funkcefunkce – vrací nějakou hodnotu – vrací nějakou hodnotu
matematické funkcematematické funkce
• abs — Absolutní hodnota abs — Absolutní hodnota • ceil — Zaokrouhlení zlomků nahoru ceil — Zaokrouhlení zlomků nahoru • cos — Cosinus cos — Cosinus • exp — Vypočtení mocniny čísla e (základ přirozeného logaritmu) exp — Vypočtení mocniny čísla e (základ přirozeného logaritmu) • floor — Zaokrouhlení zlomků dolů floor — Zaokrouhlení zlomků dolů • hexdec — Hexadecimální na desítkové hexdec — Hexadecimální na desítkové • log10 — Base-10 logarithm log10 — Base-10 logarithm • log — Natural logarithm log — Natural logarithm • max — Nalezení největší hodnoty max — Nalezení největší hodnoty • min — Nalezení nejmenší hodnoty min — Nalezení nejmenší hodnoty • pi — Získání hodnoty pí pi — Získání hodnoty pí • pow — Mocnina pow — Mocnina • rand — Generování náhodného čísla rand — Generování náhodného čísla • round — Zaokrouhlení čísla round — Zaokrouhlení čísla • sin — Sinus sin — Sinus • sqrt — Odmocnina sqrt — Odmocnina • tan — Tangens tan — Tangens
řetězcové funkceřetězcové funkce
• addslashes — Opatřit řetězec lomítky addslashes — Opatřit řetězec lomítky • chr — Vrátit určitý znak chr — Vrátit určitý znak • explode — Rozděluje řetězec jiným řetězcem explode — Rozděluje řetězec jiným řetězcem • implode — Spojit prvky pole pomocí řetězce implode — Spojit prvky pole pomocí řetězce • join — Spojit prvky pole pomocí řetězce join — Spojit prvky pole pomocí řetězce • md5 — Spočítat MD5 hash řetězce md5 — Spočítat MD5 hash řetězce • ord — Vrátit ASCII hodnotu znaku ord — Vrátit ASCII hodnotu znaku • strchr — Najít první výskyt znaku strchr — Najít první výskyt znaku • strlen — Zjistit délku řetězce strlen — Zjistit délku řetězce • strpos — Najít pozici prvního výskytu řetězce strpos — Najít pozici prvního výskytu řetězce • strrchr — Najít poslední výskyt znaku v řetězci strrchr — Najít poslední výskyt znaku v řetězci • strrev — Obrátit řetězec strrev — Obrátit řetězec • strstr — Najít první výskyt řetězce strstr — Najít první výskyt řetězce • strtolower — Změnit řetězec na malá písmena strtolower — Změnit řetězec na malá písmena • strtoupper — Změnit řetězec na velká písmena strtoupper — Změnit řetězec na velká písmena • substr_replace — Nahradit část řetězce jiným řetězcem substr_replace — Nahradit část řetězce jiným řetězcem • substr — Vrátit část řetězce substr — Vrátit část řetězce • ucfirst — Změní první písmeno řetězce na velké ucfirst — Změní první písmeno řetězce na velké • ucwords — Změnit první znak každého slova v řetězci na velké písmeno ucwords — Změnit první znak každého slova v řetězci na velké písmeno
funkce pro práci s polifunkce pro práci s poli
• array_merge — Sloučit dvě nebo více polí array_merge — Sloučit dvě nebo více polí • array_push — Přidat jeden nebo více prvků na konec pole array_push — Přidat jeden nebo více prvků na konec pole • array_rand — Vybrat náhodně jeden nebo více prvků pole array_rand — Vybrat náhodně jeden nebo více prvků pole • array_reverse — Vrátit pole s prvky v opačném pořadí array_reverse — Vrátit pole s prvky v opačném pořadí • array_shift — Odstranit prvek ze začátku pole array_shift — Odstranit prvek ze začátku pole • array_splice — Odstranit část pole a nahradit ji něčím jiným array_splice — Odstranit část pole a nahradit ji něčím jiným • array_unique — Odstranit z pole duplicitní hodnoty array_unique — Odstranit z pole duplicitní hodnoty • array_values — Vrátit všechny hodnoty v poli array_values — Vrátit všechny hodnoty v poli • array — Vytvořit pole array — Vytvořit pole • end — Nastavit vnitřní ukazatel pole na jeho poslední prvek end — Nastavit vnitřní ukazatel pole na jeho poslední prvek • foreach – Posunout interní ukazatel pole foreach – Posunout interní ukazatel pole • pos — Získat současný prvek pole pos — Získat současný prvek pole • reset — Nastavit interní ukazatel pole na jeho první prvek reset — Nastavit interní ukazatel pole na jeho první prvek • rsort — Třídit pole sestupně rsort — Třídit pole sestupně • shuffle — Zamíchat pole shuffle — Zamíchat pole • sizeof — Zjistit počet prvků v poli sizeof — Zjistit počet prvků v poli • sort — Třídit pole sort — Třídit pole
příklady práce s funkcemipříklady práce s funkcemi
úkolúkol
- vyzkoušejte uvedené matematické funkcevyzkoušejte uvedené matematické funkce- za zadaného čísla (poloměru kružnice) spočítá za zadaného čísla (poloměru kružnice) spočítá
obvod a obsah kruhuobvod a obsah kruhu- výsledek zaokrouhlí dolůvýsledek zaokrouhlí dolů
- vyzkoušejte uvedené řetězcové funkcevyzkoušejte uvedené řetězcové funkce- zadaná věta (v proměnné $veta) zadaná věta (v proměnné $veta) - spočte počet slovspočte počet slov- zjistí první výskyt spojky „a“zjistí první výskyt spojky „a“- převede řetězec a velká písmena a vypíšepřevede řetězec a velká písmena a vypíše
vlastní definice - proceduryvlastní definice - procedury
vlastní definice - funkcevlastní definice - funkce
úkolúkol
• Definuj proceduru pro výpis aktuálního data Definuj proceduru pro výpis aktuálního data a času a dne v týdnua času a dne v týdnu
• Definuj tři funkce s parametrem pro výpočet Definuj tři funkce s parametrem pro výpočet obsahu a obvodu obdélníka, pro výpočet obsahu a obvodu obdélníka, pro výpočet diskriminantu kvadratické rovnicediskriminantu kvadratické rovnice
diskriminant
zpracování formulářových datzpracování formulářových dat
způsoby předávání proměnných způsoby předávání proměnných mezi soubory a serveremmezi soubory a serverem
čtení a vyhodnocování dat z čtení a vyhodnocování dat z formulářůformulářů
jak posílat proměnné?jak posílat proměnné?
• GETGET – metoda, kdy je proměnná předávána v URL – metoda, kdy je proměnná předávána v URL stránkystránky– hodí se pro kratší informacehodí se pro kratší informace– nulové zabezpečenínulové zabezpečení– lze posílat informace přímo zadáním do prohlížečelze posílat informace přímo zadáním do prohlížeče
• POSTPOST – metoda, kdy se proměnné předávají jako – metoda, kdy se proměnné předávají jako samostatný HTML objektsamostatný HTML objekt– delší informacedelší informace– malinko lépe zabezpečenémalinko lépe zabezpečené
• použití těchto metod se definuje v hlavičce formuláře použití těchto metod se definuje v hlavičce formuláře (zadáním parametru method)(zadáním parametru method)
jak mají vypadat formuláře?jak mají vypadat formuláře?
• v tagu <form> musí být definovány parametry v tagu <form> musí být definovány parametry „„actionaction“ (název souboru se scriptem, který se po “ (název souboru se scriptem, který se po odeslání formuláře spustí)odeslání formuláře spustí)
• „„methodmethod“ (GET nebo POST)“ (GET nebo POST)• všechny prvky formulář musí být identifikovány všechny prvky formulář musí být identifikovány
jménem (parametr „jménem (parametr „namename“)“)• musí obsahovat odesílací prvek („musí obsahovat odesílací prvek („submitsubmit“);“);
• obsah formuláře se po odeslání ukládá do obsah formuláře se po odeslání ukládá do asociativního pole asociativního pole $_REQUEST, $_POST$_REQUEST, $_POST
jak vrátit zpracovaný script k jak vrátit zpracovaný script k opravě?opravě?
• obsah všech odeslaných proměnných je v obsah všech odeslaných proměnných je v poli poli $_REQUEST$_REQUEST, resp. , resp. $_POST$_POST (u metody (u metody post)post)
• pomocí funkce echo lze vypsat do pomocí funkce echo lze vypsat do formulářových polí nějaký obsahformulářových polí nějaký obsah
• odkazem nebo skrytým formulářem vrátíme odkazem nebo skrytým formulářem vrátíme obsah polí zpět do souboru s formulářemobsah polí zpět do souboru s formulářem
• zbytek je stejnýzbytek je stejný• dva způsoby jak předat tato data:dva způsoby jak předat tato data:
– pomocí skrytých formulářůpomocí skrytých formulářů– pomocí metody GET v hlavičce dokumentupomocí metody GET v hlavičce dokumentu
dva v jednomdva v jednom
• velmi často se používá zadávání i velmi často se používá zadávání i vyhodnocování dat v jednom souboruvyhodnocování dat v jednom souboru
• problém – jak má formulář vědět co se právě problém – jak má formulář vědět co se právě děje?děje?
• testujeme obsah polí testujeme obsah polí $_REQUEST, $_POST$_REQUEST, $_POST
úkolúkol
• modifikujte příklady z minulého týdne tak, modifikujte příklady z minulého týdne tak, aby se vstupní data vkládala pomocí různých aby se vstupní data vkládala pomocí různých typů formulářůtypů formulářů
konstrukce „minichatu“konstrukce „minichatu“
• po odeslání se zobrazí čas, jméno a text po odeslání se zobrazí čas, jméno a text zprávyzprávy
• výsledky budou v proměnné typu STRINGvýsledky budou v proměnné typu STRING• normálně se výsledky ukládají do normálně se výsledky ukládají do databázedatabáze• v tomto případě po ukončení prohlížeče v tomto případě po ukončení prohlížeče
informace zmizíinformace zmizí
DatabázeDatabáze
mySQLmySQL
phpmyAdminphpmyAdmin
mySQLmySQL
• databáze primárně určená pro spolupráci s phpdatabáze primárně určená pro spolupráci s php• mySQL databáze je součástí freeware balíků pro mySQL databáze je součástí freeware balíků pro
provoz webového serveru (tj. i Vertriga)provoz webového serveru (tj. i Vertriga)• mySQL běží na většině serverů s free hostingem a mySQL běží na většině serverů s free hostingem a
na všech zpoplatěných službáchna všech zpoplatěných službách• všechny databázové operace (tvorba databáze, všechny databázové operace (tvorba databáze,
třídění, výpis, mazání….) lze provádět scriptytřídění, výpis, mazání….) lze provádět scripty• na řadu operací je ale vhodné použít připravený na řadu operací je ale vhodné použít připravený
nástroj pro správu databáze - nástroj pro správu databáze - phpmyAdminphpmyAdmin
phpmyAdminphpmyAdmin
• spustíme z této spustíme z této nabídky:nabídky:
phpmyAdminphpmyAdmin
struktura php skriptu
tvorba nové tabulky
struktura tabulkystruktura tabulky
• v tomto případě má tabulka 3 sloupcev tomto případě má tabulka 3 sloupce• první sloupec se jmenuje „id“ – pořadové číslo (číslo první sloupec se jmenuje „id“ – pořadové číslo (číslo
„řádku“)„řádku“)• druhý řádek obsahuje přihlašovací jméno uživateledruhý řádek obsahuje přihlašovací jméno uživatele• třetí řádek obsahuje přihlašovací heslotřetí řádek obsahuje přihlašovací heslo• tabulka bude sloužit k ověřování uživatelůtabulka bude sloužit k ověřování uživatelů
vkládání obsahu vkládání obsahu
procházení a třídění tabulkyprocházení a třídění tabulky
úkolúkol
• vytvořte jednoduchou tabulku podle výše vytvořte jednoduchou tabulku podle výše popsaných kritériípopsaných kritérií
Spolupráce s mySQLSpolupráce s mySQL
připojení k databázipřipojení k databázipřipojení k tabulcepřipojení k tabulce
položení dotazu na databázipoložení dotazu na databázioperace s výsledkem dotazuoperace s výsledkem dotazu
připojení k databázipřipojení k databázi
• jméno serveru (localhost, jméno serveru (localhost, www.webzdarma.czwww.webzdarma.cz.....).....)• jméno uživatele (vertrigo, newstyle.wz.cz….většinou jméno uživatele (vertrigo, newstyle.wz.cz….většinou
přidělí provider)přidělí provider)• heslo (_root, zvolíte si sami na webu)heslo (_root, zvolíte si sami na webu)• název databáze (někdy nelze vytvářet databáze, máte název databáze (někdy nelze vytvářet databáze, máte
je přidělené (často stejný název jako jméno je přidělené (často stejný název jako jméno uživatele)uživatele)
připojení k databázipřipojení k databázi
• musíme ošetřit chyby – připojení se nemusí musíme ošetřit chyby – připojení se nemusí povést (a často se nepovede)povést (a často se nepovede)
• vypíše text a chybu (z funkce mysql_error) vypíše text a chybu (z funkce mysql_error) připojenípřipojení
připojení k databázipřipojení k databázi
• je vhodné do externího souboru nadefinovat je vhodné do externího souboru nadefinovat parametry připojení (SERVER, UŽIVATEL, parametry připojení (SERVER, UŽIVATEL, HESLO A JMÉNO DATABÁZE)HESLO A JMÉNO DATABÁZE)
• tyto parametry uložíme do proměnných nebo tyto parametry uložíme do proměnných nebo konstant a soubor připojíme (include) do konstant a soubor připojíme (include) do každého souborukaždého souboru
• pokud potřebujeme změnit – měníme jen v pokud potřebujeme změnit – měníme jen v jednom souborujednom souboru
příkazy v mySQLpříkazy v mySQLDefiničníDefiniční• Umožňují spravovat strukturu databázeUmožňují spravovat strukturu databáze• CREATE TABLE, DROP TABLECREATE TABLE, DROP TABLE VýběrovéVýběrové• Umožňují získat z databáze dataUmožňují získat z databáze data• SELECTSELECT
PřidávacíPřidávací• Umožňují přidávat nová data do tabulky nebo tabulekUmožňují přidávat nová data do tabulky nebo tabulek• INSERTINSERT
AktualizačníAktualizační• Umožňují měnit existující data v tabulkáchUmožňují měnit existující data v tabulkách• UPDATE, REPLACEUPDATE, REPLACE
OdstraňovacíOdstraňovací• Umožňují smazat řádky z tabulky nebo tabulekUmožňují smazat řádky z tabulky nebo tabulek• DELETEDELETE
čtení z databázečtení z databáze
• SELECT [seznam polí] FROM [název tabulky SELECT [seznam polí] FROM [název tabulky nebo tabulek] WHERE [podmínka] ORDER nebo tabulek] WHERE [podmínka] ORDER BY [seřazení]BY [seřazení]
čtení z databázečtení z databáze
• tříděnítřídění – používá se atribut ORDER BY (název – používá se atribut ORDER BY (název třídícího znaku) DESC (sestupně) ASC třídícího znaku) DESC (sestupně) ASC (vzestupně)(vzestupně)
• vyhledávánívyhledávání – používá se atribut WHERE – používá se atribut WHERE (název sloupce) LIKE (příznak)(název sloupce) LIKE (příznak)
tento dotaz vybere všechny záznamy, které ve tento dotaz vybere všechny záznamy, které ve sloupci „town“ mají hodnotu „Blovice“sloupci „town“ mají hodnotu „Blovice“
úkolúkolkontrola přihlašovacího jména kontrola přihlašovacího jména
• formulář s přihlašovacím jménem a heslemformulář s přihlašovacím jménem a heslem• po odeslání kontrola databáze, zda obsahuje po odeslání kontrola databáze, zda obsahuje
jménojméno• kontrola, zda k příslušnému jménu je zadáno kontrola, zda k příslušnému jménu je zadáno
správné heslosprávné heslo• výpis podle situace (není jméno, špatné výpis podle situace (není jméno, špatné
heslo, vše je ok)heslo, vše je ok)
vkládání údajů do databázevkládání údajů do databáze
• INSERT INTO [název tabulky] (sloupec, ...) INSERT INTO [název tabulky] (sloupec, ...) VALUES (hodnota, ...) INSERT INTO [název VALUES (hodnota, ...) INSERT INTO [název tabulky] (sloupec, ...) VALUES (hodnota, ...) tabulky] (sloupec, ...) VALUES (hodnota, ...) INSERT INTO [název tabulky] (sloupec, ...) INSERT INTO [název tabulky] (sloupec, ...) VALUES (hodnota, ...) VALUES (hodnota, ...)
oprava údajů v databázioprava údajů v databázi
• příkaz UPDATEpříkaz UPDATE• stejná struktura jako INSERTstejná struktura jako INSERT
export údajů z databázeexport údajů z databáze
• k dotazu SELECT přidáme atribut INTO k dotazu SELECT přidáme atribut INTO OUTFILE (název souboru)OUTFILE (název souboru)
soubory v databázisoubory v databázi
• vždy zapeklitý problém – jak zapsat bez chyby a vždy zapeklitý problém – jak zapsat bez chyby a hlavně jak zobrazithlavně jak zobrazit
• v tabulce musí být sloupec se type BLOB (binární v tabulce musí být sloupec se type BLOB (binární data)data)
• data čteme z nějakého souboru na disku pomocí:data čteme z nějakého souboru na disku pomocí:$otevrit = fopen(soubor, "rb");$otevrit = fopen(soubor, "rb");$data = fread($otevrit,filesize(soubor));$data = fread($otevrit,filesize(soubor));
• obsah proměnné data vkládáme do db poté, co jsme obsah proměnné data vkládáme do db poté, co jsme jej převedli na řetězce jej převedli na řetězce
• $data = mysql_escape_string($data);$data = mysql_escape_string($data);• $data = addslashes($data);$data = addslashes($data);
soubory v databázisoubory v databázi
• vždy problematické – možná lépe export do souborů vždy problematické – možná lépe export do souborů uspořádaných do složekuspořádaných do složek
• pozor na typ BLOB do 65kb, MEDIUMBLOB do 16Mbpozor na typ BLOB do 65kb, MEDIUMBLOB do 16Mb• binární data lze zobrazovat pomocí volání header binární data lze zobrazovat pomocí volání header
(specifikace, název souboru);(specifikace, název souboru);– pozor!! Header musí být první výstup do prohlížeče (jinak pozor!! Header musí být první výstup do prohlížeče (jinak
chyba) – včetně hlavičky html dokumentuchyba) – včetně hlavičky html dokumentu– v header zadáme specifikaci výstupu v header zadáme specifikaci výstupu
• Content-Type: image/jpegContent-Type: image/jpeg
• Content-Type: text/rtfContent-Type: text/rtf
emailemail
formát funkce mailformát funkce mail
zasílání emailuzasílání emailu
funkce mailfunkce mail
• slouží k zasílání mailůslouží k zasílání mailůmail (string $to, string $subject, string $message [, mail (string $to, string $subject, string $message [,
string $additional_headers [, string string $additional_headers [, string $additional_parameters]] )$additional_parameters]] )
• při posílání mailů z localhostu – může dojít k při posílání mailů z localhostu – může dojít k problémům – musí být zajištěn přístup k problémům – musí být zajištěn přístup k direktivě direktivě sendmailsendmail
• optimální je mít nainstalovaný mail server optimální je mít nainstalovaný mail server (např. Free SMPT server, POSTCAST Server)(např. Free SMPT server, POSTCAST Server)
funkce mailfunkce mail
• tato část programu zajistí odeslání mailu na tato část programu zajistí odeslání mailu na mailserver mailserver
SessionsSessions
k čemu to jek čemu to je
registrace session proměnýchregistrace session proměných
vymazání proměnnýchvymazání proměnných
SessionsSessions
• způsob předávání proměnných mezi souboryzpůsob předávání proměnných mezi soubory
• proměnná se registruje a do doby vypršení platnosti (dá se proměnná se registruje a do doby vypršení platnosti (dá se nastavit), do ukončení okna prohlížeče nebo manuálního nastavit), do ukončení okna prohlížeče nebo manuálního ukončení platnosti session je tato proměnná (včetně obsahu) k ukončení platnosti session je tato proměnná (včetně obsahu) k dispozici všem php souborůmdispozici všem php souborům
• session se musí spustit direktivousession se musí spustit direktivousession_start();session_start();
• tato direktiva musí být úplně první (před jakýmkoliv odesláním tato direktiva musí být úplně první (před jakýmkoliv odesláním informací do prohlížeče, tzn. i před hlavičkou html dokumentuinformací do prohlížeče, tzn. i před hlavičkou html dokumentu
SessionsSessions
• registrace session proměnnýchregistrace session proměnných
• registrace session proměnnýchregistrace session proměnných