Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Základy programování v PHP RNDr. Pavel Vlach, Ph.D.

Podobné prezentace


Prezentace na téma: "Základy programování v PHP RNDr. Pavel Vlach, Ph.D."— Transkript prezentace:

1 Základy programování v PHP RNDr. Pavel Vlach, Ph.D.

2 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 –weboví poštovní či databázoví klienti –vyhledávače a katalogy –drobnosti typu počitadla, ankety a mnoho dalších

3 Jak to funguje? •PHP kód se zapisuje v textovém tvaru •PHP interpret (běžícím na webovém serveru) kód překládá a posílá do klienta (prohlížeče) hotový html kód •skripty (podobně jako.asp) narozdíl od JavaScriptu provádí server •nezatěžuje vlastní počítač – náročný na komunikaci se serverem •př. webový server nejprve spočítá kolik 300/30 a pak prohlížeči odešle jen číslo 10

4 Co se naučíme? •syntaxi a základy jazyka PHP •používání proměnných a různých datových typů •větvení programů a cykly •práce se soubory •zpracování formulářových dat •spolupráce s MySQL •příklady –diskuzní fórum –základy redakčních systémů –on-line přihlašovací formulář

5 Co budeme potřebovat? •kompetence v oblasti tvorby HTML stránek •webový server (Apache s technologií PHP) •textový procesor (PSPad, Pozn. blok) •hodně času a chuti

6 1. princip funkce PHP a)historie PHP a html b)ještě jednou jak to funguje b) jak se to spojí s html

7 Historie a skriptovací jazyky •první stránky statické – nereagovaly, nebyly interaktivní •dynamické stránky - reagují na tlačítka a myš, zpracovávají data zadávaná uživatelem, zobrazované informace se mění apod. •dynamické stránky lze rozdělit do dvou skupin: –klientské –serverové

8 klientské scriptovací jazyky •Spolu s HTML stránkou je prohlížeči odeslán i programový kód a ten je ve vhodnou chvíli na "cílovém" počítači spuštěn •při kliknutí na tlačítko, při najetí myší na odkaz, při otevření okna prohlížeče a podobně •O spuštění klientského kódu se stará prohlížeč - a to může být nevýhoda - musí znát programovací jazyk •JavaScript

9 serverové scriptovací jazyky •prohlížeč požaduje webovou stránku ze serveru - server tuto stránku nejprve sestaví a pak odešle •Servery sestavují pokaždé jinou stránku v závislosti na tom, co přesně prohlížeč požaduje •php, asp

10 Jak vypadá php script? •obsahuje jednak kusy normálního HTML kódu, a jednak kusy programového kódu. Když webový server obdrží požadavek na zpracování takového skriptu, vezme: –kusy HTML kódu tak, jak jsou –části PHP programového kódu provede –výsledek zkombinuje a odešle prohlížeči •Server totiž výsledek posílá do prohlížeče jako obyčejnou HTML stránku •zapsaný kód v editoru vypadá jinak než po zobrazení „zdrojového kódu“ v prohlížeči

11 ukázka zápisu prosté html stránky •prostý html zápis (bez validní struktury, ale v prholížeči tento zápis „projde“)

12 ukázka zápisu se včleněným php kódem •zápis kódu v editoru •zobrazení prohlížeči •výpis zdrojového kódu v prohlížeči •všimněte si adresy v okně prohlížeče adresa

13 Jak to, že se liší kód v editoru a kód v prohlížeči? •Prohlížeč „neví“, co všechno se na serveru dělo než mu byl výstup odeslán •prohlížeč (a tedy i ten, kdo si chce přečíst kód v pohlížeči) vidí jen samotný výsledek •na serveru se mohla dít celá řada věcí: –matematické výpočty –přístupy k databázím –formátování –operace s řetězci a další taškařice

14 závěrečné shrnutí 1.skript musí být "prohnán" serverem -otevřením v textovém editoru nebo si ho prohlédnete jako soubor na disku, neuvidíte výsledek, ale zdrojový kód skriptu -plést se může zejména tehdy, když máte PHP skript na vlastním počítači - PHP soubor proženete serverem tak, že se na něj zeptáte prohlížeče pomocí adresy url. Například pomocí

15 závěrečné shrnutí 2. PHP skripty nejsou závislé na prohlížeči 3. integrace PHP do html pomocí speciálních značek: - celý soubor může být jeden dlouhý PHP kód. - kód PHP je na jednom určitém místě - v souboru je více místo obsahující PHP kód - 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í 4. výsledkem PHP skriptu je normální HTML stránka – nepouštějte se do práce v PHP, pokud alespoň zběžně neznáte HTML 5. k dispozici musí být webový server

16 doporučená literatura •Jiří Kosek PHP tvorba interaktivních internetových aplikací Grada Publishing 1999, 492 stran ISBN •stará, ale dobrá •různé webové kurzy •www.php.net

17 webový server a jeho instalace apachephpmySQL

18 jak na instalaci? •instalace a přená konfigurace webového serveru Apache a následně spuštění technologií php a mySQL může být velmi obtížná •pro začátek (v rámci celého kurzu vystačíme) lze nainstalovat celý balíček výše zmíněných serverů a aplikací •odkazy na 3v1 instalace:

19 Vertrigo server •stabilní, většinou bezproblémová instalace •nabízí Apache, PHP4 a mySQL •možnosti konfigurace v rozbalovací liště •první volba umožňuje restart a vypnutí serveru •v liště Tools je k dispozici phpMyAdmin •Settings umožňují základní konfiguraci

20 Vertrigo server

21 Úkol •na ploše je umístěn zástupce serveru Vertrigo •spusťte jej a pozorujte změny na panelu nástrojů •spusťte konfigurační program

22 Vertrigo server •pro naše účely stačí základní konfigurace •složka, ve které budou interpretovány php scripty má tuto cestu: C:/Program Files/VertrigoServ/www •v prohlížeči se příslušný soubor zobrazí, pokud zadáte: C:/Program Files/VertrigoServ/www/zdroje/pokus.php bude interpretován v prohlížeči pokud zadáte:

23 základní syntaxe jazyka php implementace php do html syntaxekomentáře

24 vložení php do html •tři způsoby vložení php scriptu php php [PHP kód] •doporučuji druhý způsob •budeme používat první způsob 

25 vložení php do html

26 syntaxe php •všechny datové struktury –příkazy –deklarace –funkce •musí být odděleny středníkem •pokud se objeví při zobrazení stránky chyba Parse Error, většinou někde chybí středník •nezáleží na počtu mezer nebo řádek za středníkem

27 syntaxe php •tohle hlásí chybu •tohle funguje

28 komentáře •komentáře jsou úseky kódu, které server ani prohlížeč nezobrazuje, resp. nezpracovává •slouží ke zvýšení přehlednosti kódu •naučme se je používat hned, později to bude automatické •u rozsáhlejších programů nezbytnou podmínkou

29 komentáře •jednořádkový komentář začíná dojicí znaků // (lomítko) nebo znakem # (Alt Gr+X) •dvouřádkový komentář začíná /* (lomítko, hvězdička) a končí opačně, tj. */

30 výpis na obrazovku echo (); print(); formátování a escape sekvence

31 echo (); •tento příkaz vypíše obsah proměnné, řetězec, číslo, html tag…. •možné zápisy: echo (“Hello world“); echo ($promenna); echo (“ odstavec “);

32 echo – příklady kódů

33 echo – „zlobivé“ znaky •zvláštní formátování mají znaky “, \, <, $ •před nimi se používá znaku \ •používá se hlavně při formátování html tagů •těmto znakům se říká „escape sekvence“

34 escape sekvence

35 escape sekvence – ještě jednou

36 jak jinak na uvozovky?

37 úkol •s použitím příkazu echo(), escape sekvencí a html tagů •s použitím příkazu echo(), escape sekvencí a html tagů •napište v PSPadu php script, který zobrazí v okně prohlížeče tento text: •výsledek uložte do vaší složky

38 proměnné druhy proměnných datové typy operátory

39 proměnná •programovací jazyk pracuje s hodnotami •hodnoty se ukládají do proměnných •proměnná má: –název (uvozený znakem $) –hodnotou •hodnota proměnné v programu jednoznačně daná •během programu se však může měnit

40 typy proměnných •php automaticky po přiřazení hodnoty vybere vhodný datový typ $zapnuto=true //typ boolean $nazev=“aleš“ //typ string

41 proměnné typy a triky •jednopísmenné názvy ne – po týdnu nevím, co je proměnná $d a $g ? •příliš dlouhé názvy také ne – zápis jde a snadněji se udělá chyba •používejte sebepopisující názvy, jeden jazyk –četina bez hacku a carek –angličtina •používejte velbloudí notaci – pro přehlednost vkládejte do názvu proměnné velká písmena: $PopisTabulky$FindCursorPosition$MoveCursor

42 operátory •běžné operátory •podobná syntaxe jako v jazyce C++ •řetězce spojujeme pomocí tečky (.)

43 příklad 1

44 příklad 2

45 úkol •vytvořte script, který bude kombinovat příkaz echo a proměnné různých typů •proveďte různé operace s proměnnými, spojujte řetězce atd. •výsledek uložte do vaší složky

46 větvení programu typy podmínek

47 if …. else •struktura if (výraz, podmínka) { …….. } if (výraz, podmínka) { …….. } else { ……. } if (výraz, podmínka) { …….. } else if { ……. } else { ……. } else { ……. } •v závorce se testuje proměnná typu boolean nebo jakýkoliv výraz pomocí porovnávacích operátorů

48 if – příklad 1

49 if - příklad 2

50 podmínky - tipy a triky •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 podmínka. Vnořené podmínky jsou někdy potřeba, ale mohou pěkně znepřehlednit kód. •Zvažte použití větve else v podmínce vždy, když si nejste absolutně jisti, že větve elseif pokrývají všechny alternativy. •Formátujte kód tak, abyste se v něm vyznali •KOMENTUJTE. Podmínky mohou být složité a za půl roku, když budete potřebovat skript oprášit už nebudete vědět, proč jste je psali.

51 podmínky - úkol •vytvořte 3 scripty, které budou využívat větvení pomocí podmínky if elseif a else •v prvním skriptu testujte výraz typu boolean •v druhém skriptu testujte číselnou proměnnou pomocí operátorů, •v druhém skriptu testujte číselnou proměnnou pomocí operátorů, •ve třetím scriptu testujte řetězce pomocí operátorů ==, != a logických operátorů && a || •uložte do vaší složky

52 switch •nahrazuje níže uvedenou strukturu: if (výraz1) {…………} elseif (výraz2) {…………} elseif (výrazn) {…………} else {…………………….} •má tento tvar switch (podmínka) { case výraz1: case výraz2: case výraz3: default:}

53 switch - příklad

54 smyčky - cykly cyklus for cyklus do….while cyklus while

55 cyklus for •cyklus s parametrem – víme, kolikrát cyklus proběhne for ($i=1; $i<=20; $ i++) { ……. } •před započetím konkrétního cyklu se vyhodnotí výraz druhý (zde $i<=20) •neplatí-li podmínka, cyklus se ukončí •platí-li, cyklus pokračuje dále a provede se sekvence mezi složenými závorkami po ukončení těla smyčky se provede třetí výraz (zde se parametr $i zvýší o jedničku •vše se opakuje

56 for - příklad

57 cyklus s podmínkou •s podmínkou na začátku : •tělo cyklu proběhne jen tehdy, je-li platná podmínka while (podmínka) {…….} •s podmínkou na konci : •tělo cyklu proběhne vždy minimálně jednou •opakuje se, pokud platí podmínka do {…….} while (podmínka)

58 příklad - while

59 příklad – do…while

60 cykly – tipy a triky •většinou jsou oblíbenější smyčky s podmínkou na začátku •Smyčky se mohou vnořovat. Formátujte si kód (=používejte tabulátor) •komentáře, zejména u delších smyček. Vůbec totiž nemusí být jasné, kde smyčka začala, když je kód dlouhý. Komentujte konce smyček. •velký pozor na podmínky – použijete-li místo porovnávacího operátoru (==) operátor přiřazení (=) celý skript se zablokuje – vytvořili jste nekonečnou smyčku…..

61 proměnná typu pole jednorozměrné pole vícerozměrné pole

62 k čemu pole? •do jedné proměnné můžeme uložit indexová data •např: dny v týdnu, seznamy $DenvTydnu[1]=“pondělí“;$DenvTydnu[2]=“úterý“;$DenvTydnu[7]=“neděle“; •lze použít asociativní pole: $PocetObyvatel[“Blovice“]=4005; $PocetObyvatel[“Habří“]=0;

63 definice pole •výčtem (viz předchozí strana) •funkcí Array $Pracovni Tym= Array (“Ludva”,”Gita“,“Adolf“,“Čeněk“); •POZOR! indexuje se standardně od nuly $Mesta = Array(1=>“Blovice“, 2=>“Nepomuk“, 3=>“Měčín“);

64

65

66 vícerozměrné pole

67 funkce matematické funkce řetězcové funkce funkce pro práci s poli vlastní funkce

68 funkce •předdefinovaný (uživatelem nebo standardně) úsek kódu, který vykonává nějakou činnost nebo vrací hodnotu •rozlišujeme procedury a vlastní funkce –procedura - úsek kódu, který vykonává nějakou sekvenci příkazů –funkce – vrací nějakou hodnotu

69 matematické funkce •abs — Absolutní hodnota •ceil — Zaokrouhlení zlomků nahoru •cos — Cosinus •exp — Vypočtení mocniny čísla e (základ přirozeného logaritmu) •floor — Zaokrouhlení zlomků dolů •hexdec — Hexadecimální na desítkové •log10 — Base-10 logarithm •log — Natural logarithm •max — Nalezení největší hodnoty •min — Nalezení nejmenší hodnoty •pi — Získání hodnoty pí •pow — Mocnina •rand — Generování náhodného čísla •round — Zaokrouhlení čísla •sin — Sinus •sqrt — Odmocnina •tan — Tangens

70 řetězcové funkce •addslashes — Opatřit řetězec lomítky •chr — Vrátit určitý znak •explode — Rozděluje řetězec jiným řetězcem •implode — Spojit prvky pole pomocí řetězce •join — Spojit prvky pole pomocí řetězce •md5 — Spočítat MD5 hash řetězce •ord — Vrátit ASCII hodnotu znaku •strchr — Najít první výskyt znaku •strlen — Zjistit délku řetězce •strpos — Najít pozici prvního výskytu řetězce •strrchr — Najít poslední výskyt znaku v řetězci •strrev — Obrátit řetězec •strstr — Najít první výskyt řetězce •strtolower — Změnit řetězec na malá písmena •strtoupper — Změnit řetězec na velká písmena •substr_replace — Nahradit část řetězce jiným řetězcem •substr — Vrátit část řetězce •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

71 funkce pro práci s poli •array_merge — Sloučit dvě nebo více polí •array_push — Přidat jeden nebo více prvků na konec 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_shift — Odstranit prvek ze začátku pole •array_splice — Odstranit část pole a nahradit ji něčím jiným •array_unique — Odstranit z pole duplicitní hodnoty •array_values — Vrátit všechny hodnoty v poli •array — Vytvořit pole •end — Nastavit vnitřní ukazatel pole na jeho poslední prvek •foreach – Posunout interní ukazatel pole •pos — Získat současný prvek pole •reset — Nastavit interní ukazatel pole na jeho první prvek •rsort — Třídit pole sestupně •shuffle — Zamíchat pole •sizeof — Zjistit počet prvků v poli •sort — Třídit pole

72 příklady práce s funkcemi

73 úkol -vyzkoušejte uvedené matematické funkce -za zadaného čísla (poloměru kružnice) spočítá obvod a obsah kruhu -výsledek zaokrouhlí dolů -vyzkoušejte uvedené řetězcové funkce -zadaná věta (v proměnné $veta) -spočte počet slov -zjistí první výskyt spojky „a“ -převede řetězec a velká písmena a vypíše

74 vlastní definice - procedury

75 vlastní definice - funkce

76 úkol •Definuj proceduru pro výpis aktuálního data a času a dne v týdnu •Definuj tři funkce s parametrem pro výpočet obsahu a obvodu obdélníka, pro výpočet diskriminantu kvadratické rovnice diskriminant

77 zpracování formulářových dat způsoby předávání proměnných mezi soubory a serverem čtení a vyhodnocování dat z formulářů

78 jak posílat proměnné? •GET – metoda, kdy je proměnná předávána v URL stránky –hodí se pro kratší informace –nulové zabezpečení –lze posílat informace přímo zadáním do prohlížeče •POST – metoda, kdy se proměnné předávají jako samostatný HTML objekt –delší informace –malinko lépe zabezpečené •použití těchto metod se definuje v hlavičce formuláře (zadáním parametru method)

79 jak mají vypadat formuláře? •v tagu musí být definovány parametry „action“ (název souboru se scriptem, který se po odeslání formuláře spustí) •„method“ (GET nebo POST) •všechny prvky formulář musí být identifikovány jménem (parametr „name“) •musí obsahovat odesílací prvek („submit“); •obsah formuláře se po odeslání ukládá do asociativního pole $_REQUEST, $_POST

80

81 jak vrátit zpracovaný script k opravě? •obsah všech odeslaných proměnných je v poli $_REQUEST, resp. $_POST (u metody post) •pomocí funkce echo lze vypsat do formulářových polí nějaký obsah •odkazem nebo skrytým formulářem vrátíme obsah polí zpět do souboru s formulářem •zbytek je stejný •dva způsoby jak předat tato data: –pomocí skrytých formulářů –pomocí metody GET v hlavičce dokumentu

82

83

84 dva v jednom •velmi často se používá zadávání i vyhodnocování dat v jednom souboru •problém – jak má formulář vědět co se právě děje? •testujeme obsah polí $_REQUEST, $_POST

85

86 úkol •modifikujte příklady z minulého týdne tak, aby se vstupní data vkládala pomocí různých typů formulářů

87 konstrukce „minichatu“ •po odeslání se zobrazí čas, jméno a text zprávy •výsledky budou v proměnné typu STRING •normálně se výsledky ukládají do databáze •v tomto případě po ukončení prohlížeče informace zmizí

88

89 Databáze mySQLphpmyAdmin

90 mySQL •databáze primárně určená pro spolupráci s php •mySQL databáze je součástí freeware balíků pro provoz webového serveru (tj. i Vertriga) •mySQL běží na většině serverů s free hostingem a na všech zpoplatěných službách •všechny databázové operace (tvorba databáze, třídění, výpis, mazání….) lze provádět scripty •na řadu operací je ale vhodné použít připravený nástroj pro správu databáze - phpmyAdmin

91 phpmyAdmin •spustíme z této nabídky:

92 phpmyAdmin

93 struktura php skriptu tvorba nové tabulky

94 struktura tabulky •v tomto případě má tabulka 3 sloupce •první sloupec se jmenuje „id“ – pořadové číslo (číslo „řádku“) •druhý řádek obsahuje přihlašovací jméno uživatele •třetí řádek obsahuje přihlašovací heslo •tabulka bude sloužit k ověřování uživatelů

95 vkládání obsahu

96 procházení a třídění tabulky

97 úkol •vytvořte jednoduchou tabulku podle výše popsaných kritérií

98 Spolupráce s mySQL připojení k databázi připojení k tabulce položení dotazu na databázi operace s výsledkem dotazu

99 připojení k databázi •jméno serveru (localhost, •jméno uživatele (vertrigo, newstyle.wz.cz….většinou přidělí provider) •heslo (_root, zvolíte si sami na webu) •název databáze (někdy nelze vytvářet databáze, máte je přidělené (často stejný název jako jméno uživatele)

100 připojení k databázi •musíme ošetřit chyby – připojení se nemusí povést (a často se nepovede) •vypíše text a chybu (z funkce mysql_error) připojení

101 připojení k databázi •je vhodné do externího souboru nadefinovat parametry připojení (SERVER, UŽIVATEL, HESLO A JMÉNO DATABÁZE) •tyto parametry uložíme do proměnných nebo konstant a soubor připojíme (include) do každého souboru •pokud potřebujeme změnit – měníme jen v jednom souboru

102 příkazy v mySQL Definiční • Umožňují spravovat strukturu databáze • CREATE TABLE, DROP TABLE Výběrové • Umožňují získat z databáze data • SELECT Přidávací • Umožňují přidávat nová data do tabulky nebo tabulek • INSERT Aktualizační • Umožňují měnit existující data v tabulkách • UPDATE, REPLACE Odstraňovací • Umožňují smazat řádky z tabulky nebo tabulek • DELETE

103 čtení z databáze •SELECT [seznam polí] FROM [název tabulky nebo tabulek] WHERE [podmínka] ORDER BY [seřazení]

104 čtení z databáze •třídění – používá se atribut ORDER BY (název třídícího znaku) DESC (sestupně) ASC (vzestupně) •vyhledávání – používá se atribut WHERE (název sloupce) LIKE (příznak) tento dotaz vybere všechny záznamy, které ve sloupci „town“ mají hodnotu „Blovice“

105 úkol kontrola přihlašovacího jména •formulář s přihlašovacím jménem a heslem •po odeslání kontrola databáze, zda obsahuje jméno •kontrola, zda k příslušnému jménu je zadáno správné heslo •výpis podle situace (není jméno, špatné heslo, vše je ok)

106 vkládání údajů do databáze •INSERT INTO [název tabulky] (sloupec,...) VALUES (hodnota,...) INSERT INTO [název tabulky] (sloupec,...) VALUES (hodnota,...) INSERT INTO [název tabulky] (sloupec,...) VALUES (hodnota,...)

107 oprava údajů v databázi •příkaz UPDATE •stejná struktura jako INSERT export údajů z databáze •k dotazu SELECT přidáme atribut INTO OUTFILE (název souboru)

108 soubory v databázi •vždy zapeklitý problém – jak zapsat bez chyby a hlavně jak zobrazit •v tabulce musí být sloupec se type BLOB (binární data) •data čteme z nějakého souboru na disku pomocí: $otevrit = fopen(soubor, "rb"); $data = fread($otevrit,filesize(soubor)); •obsah proměnné data vkládáme do db poté, co jsme jej převedli na řetězce •$data = mysql_escape_string($data); •$data = addslashes($data);

109 soubory v databázi •vždy problematické – možná lépe export do souborů uspořádaných do složek •pozor na typ BLOB do 65kb, MEDIUMBLOB do 16Mb •binární data lze zobrazovat pomocí volání header (specifikace, název souboru); –pozor!! Header musí být první výstup do prohlížeče (jinak chyba) – včetně hlavičky html dokumentu –v header zadáme specifikaci výstupu •Content-Type: image/jpeg •Content-Type: text/rtf

110 formát funkce mail zasílání u

111 funkce mail •slouží k zasílání mailů mail (string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]] ) •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 direktivě sendmail •optimální je mít nainstalovaný mail server (např. Free SMPT server, POSTCAST Server)

112 funkce mail •tato část programu zajistí odeslání mailu na mailserver

113 Sessions k čemu to je registrace session proměných vymazání proměnných

114 Sessions •způsob předávání proměnných mezi soubory •proměnná se registruje a do doby vypršení platnosti (dá se nastavit), do ukončení okna prohlížeče nebo manuálního ukončení platnosti session je tato proměnná (včetně obsahu) k dispozici všem php souborům •session se musí spustit direktivou session_start(); •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 dokumentu

115 Sessions •registrace session proměnných


Stáhnout ppt "Základy programování v PHP RNDr. Pavel Vlach, Ph.D."

Podobné prezentace


Reklamy Google