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

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

Základy programování v PHP

Podobné prezentace


Prezentace na téma: "Základy programování v PHP"— 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 historie PHP a html 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
adresa 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

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í 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

17 webový server a jeho instalace
apache php mySQL

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: příklad: 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 syntaxe komentáře

24 vložení php do html tři způsoby vložení php scriptu
<? [PHP kód] ?> <?php [PHP kód] ?> <SCRIPT LANGUAGE="php"> php [PHP kód] </SCRIPT> doporučuji druhý způsob budeme používat první způsob  doporučuji druhý způsob. budeme používat první způsob ", "width": "800" }

25 vložení php do html

26 syntaxe php všechny datové struktury musí být odděleny středníkem
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 echo (); print(); formátování a escape sekvence
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 (“<strong>odstavec</strong>“);

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ů <div> <strong> <em> <a> <h2> napište v PSPadu php script, který zobrazí v okně prohlížeče tento text: výsledek uložte do vaší složky

38 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 { ……. } 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ů <, >, <=, => 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: má tento tvar
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 cyklus for cyklus do….while cyklus while
smyčky - cykly cyklus for cyklus do….while cyklus while

55 cyklus for for ($i=1; $i<=20; $ i++) { ……. }
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 jednorozměrné pole vícerozměrné pole
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 <form> 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 mySQL phpmyAdmin

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 položení dotazu na databázi operace s výsledkem dotazu
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, www.webzdarma.cz.....)
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í emailu

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 k čemu to je registrace session proměných vymazání proměnných
Sessions k čemu to je registrace session proměných vymazání proměnných

114 Sessions session se musí spustit direktivou
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 registrace session proměnných


Stáhnout ppt "Základy programování v PHP"

Podobné prezentace


Reklamy Google