Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze Lucie Pourová E-learningový modul pro pochopení technologií PHP a MySQL/MS SQL ve výuce Bakalářská práce 2009
Prohlašuji, že jsem bakalářskou práci na téma E-learningový modul pro pochopení technologií PHP a MySQL/MS SQL ve výuce zpracovala samostatně a použila pouze zdrojů, které cituji a uvádím v seznamu použité literatury. V Praze dne 15. 5. 2009 Podpis
Obsah Obsah... 4 Seznam použitých termínů... 6 Anotace... 7 Anotation... 7 1. Úvod... 8 2. Skriptovací jazyky... 9 2.1 Perl... 9 2.1 Python... 9 2.2 ASP... 9 2.3 ASP.NET... 10 2.4 PHP... 10 3. PHP... 11 3.1 Historie PHP... 11 3.2 Výhody PHP... 12 3.3 Webové stránky pomocí PHP... 13 4. Systém řízení báze dat... 13 4.1 Relační model... 14 4.2 MySQL... 14 5. Volba prostředků pro tvorbu webové aplikace... 15 5.1 Xampp... 15 5.2 phpmyadmin... 17 5.3 PSPad... 18 6. Tvorba databáze... 19 6.1 Diagram... 20 6.2 Tvorba tabulek... 21 6.3 Plnění tabulek... 24 7. Skripty PHP... 27 7.1 Úvod skriptů... 28 7.2 Připojení a odpojení databáze... 29 8. Web... 30 8.1 Formulář herci... 30 4
8.2 Formulář režiséři... 33 8.3 Formulář filmy... 33 8.4 Formulář pro nahlížení do tabulek... 34 8.5 Formulář hledej... 35 8.6 Formulář mazání... 36 9. E-learning... 37 10. Moodle... 37 10.1 Využití... 37 10.2 Registrace do moodlu... 38 10.3 Rozdělení kurzu... 39 10.4 Správa moodlu... 40 10.5 Obsah kurzu... 40 11. Závěr... 42 12. Seznam obrázků... 43 13. Seznam použitých zdrojů... 44 14. Přílohy... 45 14.1 Vložení herce... 45 14.2 Vložení režiséra... 47 14.3 Vložení filmu... 49 14.4 Obsah tabulek... 51 14.5 Hledání filmů... 54 14.6 Mazání dat... 56 5
Seznam použitých termínů Apache ASP ASP.NET e-learning HTML IANA Moodle msql MS SQL MySQL Oracle Pearl PHP phpmyadmin PostgreSQL PSPad Python SQL SŘBD Sybase TCP Xampp - webový server - Active Server Pages skriptovací jazyk - nástupce ASP - webová aplikace - vzdělávací proces využívající informační technologie - HyperText Markup Language značkovací jazyk - organizace přidělující TCP porty - softwarový balík pro tvorbu e-learningových kurzů - systém řízení báze dat - systém řízení báze dat - systém řízení báze dat - systém řízení báze dat databáze - skriptovací jazyk - Personal Home Page skriptovací jazyk - webová aplikace - systém řízení báze dat - textový editor pro psaní skriptů - skriptovací jazyk - Structured Query Language strukturovaný dotazovací jazyk - systém řízení báze dat - systém řízení báze dat - Transmission Control Protocol, protokol v transportní vrstvě - softwarový balík obsahující 6
Anotace Bakalářská práce se zabývá technologiemi PHP a MySQL. V teoretické části popisuji skriptovací jazyky a systémy řízení báze dat. Dále uvádím prostředky potřebné pro tvorbu webových aplikací a nakonec popisuji e-learningový modul, který jsem vytvořila. V praktické části jsem nejprve vytvořila databázi, která se skládá z různých tabulek a vytvořila skripty pro práci s databází na webu. Svou práci jsem zaznamenávala pomocí různých programů a následně vložila do vytvořeného kurzu v moodlu. Anotation This thesis deals with PHP and MySQL technologies. I describe script languages and database management systems in the theoretical part. In addition, I present the necessary means for creating web applications, and finally a description of the e-learning module that I created. In the practical part I created a database that consists of various tables, as well as, scripts to work with databases on the web. Throughout my research I recorded my work using different programs, and subsequently, inserted it to Moodle where the course was created. 7
1. Úvod Tato práce se zabývá technologiemi PHP a MySQL. PHP a MySQL jsem si vybrala proto, že mě tato oblast zajímá a ráda bych se v ní zdokonalila a také proto, že v současné době jsou tyto technologie velmi využívány. Na začátku práce popisuji skriptovací jazyky, jejich historii a použití. Dále popisuji systém řízení báze dat, do něhož patří MySQL, které jsem si vybrala pro tvorbu praktické části. V praktické části této práce je uvedena tvorba databáze, pro kterou používám server localhost. Vysvětluji připojení k tomuto serveru pomocí aplikace xampp. V databázi jsem vytvořila propojený systém tabulek na základě navrhnutého diagramu. Dále jsem si pro správu tabulek vytvořila PHP skripty, které spolupracují s databází a je možné je zobrazit na webu. Pomocí formulářů na webu můžeme vkládat další data do tabulek a provádět s nimi různé činnosti. Cílem mé práce je vytvořit nejen webovou aplikaci, ale i předat tyto informace dále. Proto jsem si vybrala téma e-learningového modulu, který by měl sloužit studentům pro pochopení a naučení se tvorby stránek pomocí PHP a databáze. Tento kurz by měl být volně dostupný na stránkách moodle.sks.cz. 8
2. Skriptovací jazyky Dnes existuje několik skriptovacích jazyků. Všechny tyto skriptovací jazyky mají své výhody a nevýhody. Používají se na různých operačních systémech, v různých aplikacích a jsou si velmi podobné. Mají několik stejných i rozlišných funkcí. V dnešní době je ovšem nejvíce dynamických webových stránek tvořeno jazykem PHP, protože je velmi rozšířený a vydaný již v několika verzích. Nyní popíši některé tyto jazyky. Například: Python, PHP, Perl, ASP, ASP.NET. 2.1 Perl Skriptovací jazyk Perl navrhl již v roce 1986 programátor Larry Wall a původně tento jazyk nazval Gloria, což bylo jméno jeho manželky. Nakonec ustoupil od tohoto názvu a jazyk nazval Pearl. Tento název se také dlouho neudržel, jelikož takto nazvaný jazyk již existoval. V roce 1986 nebyl Perl přímo skriptovacím jazykem, ale měl sloužit Larrymu pro lepší zpracování textu a ovládání počítačů. Po odezvě při předvedení tohoto jazyka pro veřejnost se Larry rozhodl, že vytvoří řádný skriptovací jazyk a za pomoci dalších programátorů vznikl dnes velmi používaný jazyk Perl. Je velmi podobný jazyku C, jednoduchý, ale i přesto s ním je možné vytvořit složitější aplikace s podporou grafických rozhraní či databází. Používá podobné operace jako PHP. [2] 2.1 Python Python je open source skriptovací jazyk, který vznikl v roce 1990 a navrhl ho Guido van Rossum. Podporuje grafické rozhraní. Spolupracuje s dalšími programovacími jazyky jako je C++, Java a další. Také používá obdobné funkce jako PHP. [13] 2.2 ASP Active Server Pages je technologie firmy Microsoft pro serverové skripty. Tato technologie je k dispozici jako součást IIS (Internet Information Services), který je taktéž od Microsoftu. ASP mají modulární strukturu, takže je možné použít více programovacích 9
jazyků. Běžně se používá VBScript a JScript. Obrovskou nevýhodou technologie ASP je skutečnost, že existuje pouze na Windows a lze ji používat pouze na IIS. [12] 2.3 ASP.NET ASP.NET je nadstavba komplexnější technologie, jejím základem je tzv..net framework firmy Microsoft. Je přímým nástupcem ASP, ale tyto technologie jsou velmi odlišné. Technologie ASP.NET umožňuje použít více programovacích jazyků a funguje na různých operačních systémech i různých webových serverech. [12] 2.4 PHP Dalším skriptovacím jazykem je PHP. PHP jsem si vybrala pro tvorbu své práce, protože je v dnešní době velmi využívaným jazykem k tvorbě dynamických webových stránek. Tento jazyk je velmi rozšířený a vydaný již v několika verzích. PHP je jednoduchý, zdarma a vhodnou průpravou pro používání dalších jazyků. 10
3. PHP PHP jsem si vybrala pro jeho jednoduchost a časté použití pro tvorbu webových stránek. Nejprve je potřeba si popsat, co to vlastně PHP je, jak se ovládá a na jaké bázi funguje. PHP je jeden z několika serverových skriptovacích jazyků. Pomocí PHP můžeme tvořit dynamické webové stránky, což jsou stránky, které mají flexibilní obsah a je možné ho kdykoliv změnit nebo upravit. 3.1 Historie PHP PHP bylo původně označováno jako Personal Home Page neboli osobní domácí stránky. Počátky PHP sahají do roku 1994, kdy dánský programátor Rasmus Lehrdorf pomocí sady skriptů v jazyce Pearl vytvořil vlastní webové stránky s několika funkcemi, jako například zobrazení obsahu stránek a jejich návštěvnost. Jednalo se o jednoduchou sadu skriptů, která byla nazvána PHP/FI (Personal Home Page / Forms Interpreter. Již s touto sadou skriptů se daly tvořit základní dynamické webové aplikace a bylo i možné využívat databáze. Další důležitý zvrat v PHP vzniknul v roce 1997, kdy dva izraelští vývojáři Zeev Suraski a Andi Gutmans chtěli používat PHP/FI pro komerční využití, ale jazyk byl pro tuto potřebu nedostačující. Rozhodli se tedy tento jazyk přepracovat a vznikl renovovaný PHP/FI, který nazvali PHP 3.0. Touto dobou již PHP používalo několik tisíc uživatelů a bylo jím vytvořeno mnoho webových aplikací. Zeev a Andi stále pracovali na přepisování jádra PHP a tak v roce 2000 přišel na trh další upgrade PHP a tentokrát se jednalo o verzi 4.0. Jádro PHP bylo nazvané ZEND Engine, což představuje počáteční písmena jmen hlavních tvůrců. A tito tvůrci založili firmu Zend Technologies v Ramat Gan v Izraeli. Firma stále existuje nejenom v Izraeli, ale i v Kanadě, Německu, Francii a Itálii a její tvůrci se dodnes podílejí na roli růstu PHP. Firmu je možné nalézt na webu a to na stránkách https://www.zend.com. V roce 2004 byla představena další nastupující verze PHP 5.0, která podporuje objektově orientované programování a obsahuje jádro Zend Engine II. [11] 11
3.2 Výhody PHP Mezi výhody PHP patří: Velký výkon Rozhraní pro mnoho druhů databází Zabudované knihovny Nízké náklady Snadná výuka Přenositelnost Výkon PHP je velmi efektivní. Jeden jednoduchý a nenáročný server je schopen obsloužit milióny požadavků denně. Integrace databází PHP je schopno připojit se na mnoho databází. Mezi tyto databáze patří MySQL, PostgreSQL, msql, Oracle, Sybase a další. Knihovny PHP bylo již od počátků navrhováno pro web a obsahuje několik funkcí, které se na web váží. Je možné vygenerovat obrázky ve formátu GIF, dokumenty formátu PDF, připojit se k síťovým službám, odesílat emaily. Cena PHP je nabízeno zdarma a jeho plná verze je ke stažení na www.php.net. Přenositelnost PHP kódy je možné napsat na jakémkoliv operačním systému, v několika různých editorech a kdekoliv bude fungovat bez potřeby změny kódu. [16] 12
3.3 Webové stránky pomocí PHP Pro tvorbu webových stránek potřebujeme znát HTML tagy, což jsou značky, které slouží k příkazům pro tvorbu jednotlivých částí. Tvorba webových stránek pomocí PHP obsahuje jak PHP kódy, tak i kódy HTML, které je potřeba znát. K tvorbě takovýchto stránek je třeba mít webový prohlížeč, databázi (v našem případě MySQL) a editor pro psaní kódu (v našem případě PSPad). Jak jsem již zmínila, v PHP tvoříme dynamické stránky. Na rozdíl od statických stránek, které jsou neměnné, špatně aktualizovatelné a klient je vidí přesně tak, jak je autor vytvořil, mají dynamické stránky spoustu výhod. Stránky tvořené pomocí PHP můžeme kdykoliv a snadno upravovat. 3.3.1 Výhody Rychlost Flexibilita Aktivní prvky Práce s databází 4. Systém řízení báze dat Systém řízení báze dat (SŘBD) je software, který slouží pro tvorbu a správu databází. Zajišťuje základní služby nezbytné pro organizaci databáze, jako například: Přesouvání dat do fyzických datových souborů a naopak Správa současného přístupu více uživatelů k datům Podpora dotazovacího jazyku, který tvoří množina příkazů pro načítání dat z databáze Mechanismy pro zálohování databáze Bezpečnostní mechanismy, které zabraňují v neoprávněném přístupu k datům Mezi systémy řízení báze dat patří například MySQL, Microsoft SQL server, Microsoft Access nebo Oracle. [6] 13
4.1 Relační model Mezi první databázové modely patřily modely hierarchické a síťové. V roce 1969 Dr. Edgar F. Codd vytvořil relační databázový model, který se využívá dodnes. Relační databáze ukládá data ve vztazích, které uživatel vidí jako tabulky. Každá tabulka je uspořádána ze záznamů a polí. To je základem pro relační databázi a umožňuje to, že data mohou existovat nezávisle na fyzickém uložení v počítači. Uživatel nemusí znát umístění těchto dat a to je rozdíl oproti hierarchickému a databázovému modelu. Vztah mezi dvojicí tabulek je dát sdílenou hodnotou v každé z nich. Data jsou z relační databáze získávána pomocí dotazu jazyka SQL. Dalšími nástupci relačního modelu byly modely objektově orientované a objektově relační. Oba tyto modely se snažily přinést do databází nové datové typy, se kterými relační model neuměl pracovat. Mezi tyto datové typy patří obrázky, audio a video záznamy. [6] 4.2 MySQL MySQL je relační databázový systém vytvořený švédskou firmou MySQL AB. Zakladatelem MySQL je Michael Monty Widenius a David Axmark. V současné době je to velmi využívaná a úspěšná open source databáze, která umožňuje uchovávat velké množství dat. Tato databáze, jak je již znatelné z názvu, využívá jazyk SQL. Tuto databázi jsem si vybrala díky jejím výhodám a to rychlosti, dostupnosti zdarma a velkému výkonu. [16] 14
5. Volba prostředků pro tvorbu webové aplikace Existuje několik prostředků pro tvorbu webových aplikací, které je třeba si nainstalovat. Potřebujeme webový server, aplikaci pro připojení a správu databáze podporující jazyk PHP a editor pro vytváření skriptů. Pro instalaci MySQL, Apache, PHP a phpmyadmin jsem zvolila aplikaci xampp, díky které nainstaluji vše zároveň a není potřeba každou část instalovat a nastavovat zvlášť. A pro psaní skriptů jsem zvolila PSPad 5.1 Xampp Xampp je softwarový balík obsahující instalace MySQL databáze, webového serveru Apache a PHP. Je zdarma ke stažení na: http://www.apachefriends.org/en/xampp.html. Tento software je výhodný proto, že nainstaluje všechny potřebné aplikace zároveň a my se tak vyhneme složitému nastavování těchto aplikací jednotlivě. Pro zprovoznění domácího serveru stačí, abychom si spustili první dvě aplikace a to Apache a MySql. Učiníme tak stisknutím tlačítka Start. V informačním okně bychom měli mít dvě následující sdělení: Apache started [Port 80] a MySql started [Port 3306]. Dále se nám pak zobrazí zeleně podsvícené Running, což signalizuje, že se Apache správně připojil na port 80 a MySql je správně připojeno na port 3306, přesně tak, jak ukazuje obr. 1. Obr. 1 Xampp Control Panel Application 15
Dále je ještě důležité, abychom v nainstalovaném souboru xampp, kdekoliv umístěném, zkontrolovali složku htdocs, která by se měla po instalaci vytvořit. Do této složky budeme vkládat veškeré soubory, abychom docílili zobrazení obsahu na webu. Po zadání do našeho prohlížeče: localhost/*.php bude možno tyto skripty prohlížet. Může ovšem nastat problém při připojování Apache na port 80 nebo MySQL na port 3306. Často se stává, že máme spuštěnou jinou aplikaci, která tento port blokuje a zabraňuje tak správnému chodu. Mezi tyto aplikace patří hlavně Skype a ICQ. Je třeba spouštět Xampp jako první nebo tyto aplikace úplně vypnout. Popřípadě je možné, že je jeden z těchto portů blokovaný ve Firewallu. Poté je třeba tyto porty povolit ve Firewallu. Postup: Ovládací nástroje -> Brána firewall systému Windows -> Povolit program v bráně firewall systému Windows -> záložka: výjimky -> přidat port: Obr. 2 Povolení portu v bráně Firewallu Na obr. 2 vidíme okno, do kterého zadáme číslo portu, který je blokovaný. V našem případě port číslo 80 nebo 3306, protokol TCP a potvrdíme. Apache i MySQL by se nám měli bez problému spustit. Čísla portů jsou přidělena od organizace IANA. Ověřit si správný chod můžeme už přímo zadáním localhost nebo 127.0.0.1 do našeho webového prohlížeče, kterým může být Internet Explorer, Mozilla Firefox, Opera a jiné. 16
5.2 phpmyadmin Obr. 3 phpmyadmin PhpMyAdmin je webová aplikace napsaná v PHP, která umožňuje práci s MySQL databází a jejími tabulkami. Jedná se o open source, díky čemuž se těší velké oblíbenosti a užívání. Základními funkcemi této aplikace je tvorba databází, strukturalizace tabulek, jejich oprava a údržba, vyhledávání dat v tabulkách, SQL dotazy. Levý sloupec představuje již vytvořené databáze a jejich tabulky a nabízí dokumentaci, SQL okno a návrat na domovskou stránku. Okno vpravo slouží ke správě dat. Hned nahoře máme informace o hostitelském serveru, na kterém je databáze spuštěna, což je pro nás localhost. Dále máme v tomto okně několik záložek, které můžeme využívat. Jedná se o záložky: Databáze, SQL, Stav, Proměnné, Znakové sady, Úložiště, Oprávnění, Procesy, Export a Import. Nejdůležitějšími záložkami pro nás jsou hned první dvě a to Databáze a SQL. Slouží pro kontrolu vytvořených tabulek a dotazů SQL, které budeme využívat ve skriptech. A také si tu můžeme nastavit rozhraní phpmyadmin jazyk, vzhled, barvu a velikost. V současné době je tato aplikace dostupná v 52 jazycích a na jejím vývoji se stále podílí tým stávající z těchto členů: Olivier Müller, Marc Delisle, Alexander M. Turek, Michal Čihař a Garvin Hicking. 17
5.3 PSPad Existuje několik textových editorů, které můžeme využívat pro psaní skriptů. Tím úplně základním editorem je Poznámkový blok. Není ale příliš výhodný. Nejlepší editory jsou takové, které umí pracovat s PHP a díky tomu nám usnadňují práci a kontrolu skriptů. Je možné sehnat několik takových editorů zdarma. Já jsem si vybrala program PSPad, který je zdarma ke stažení na stránkách http://www.pspad.com/cz/download.php. Mezi jeho kladné vlastnosti patří práce s projekty, barevné zvýraznění textu, automatické opravy, šablony, záložky a další. PSPad je univerzální textový editor, protože podporuje nejenom PHP, ale i řadu dalších programovacích jazyků jako například java, python, SQL, XML, HTML a jiné. [4] Pro správnou funkci skriptů v PHP je důležité nastavení prvního skriptu a to v nabídce Nový soubor, kde je k výběru několik již zmíněných programovacích jazyků. Díky tomuto nastavení se nám bude správně barevně zobrazovat datové typy a proměnné. Obr. 4 PSPad 18
6. Tvorba databáze Nyní už jsme připojeni k databázi a máme možnost vytvářet vlastní databázi a tabulky. Prvním krokem bude vytvoření databáze. Tu vytvoříme hned na první stránce. Je třeba pojmenovávat veškeré vytvořené projekty a tabulky tak, abychom si to dobře zapamatovali a pak je správně použili do našich skriptů psaných v PSPadu. Obr. 5 Tvorba databáze Na obr. 5 vidíme, že máme vytvořenou novou databázi, která se nazývá bd. Databáze prozatím neobsahuje žádné tabulky, což nám ukazuje další obr. 6. Obr. 6 Databáze bez tabulek Tabulky je nejprve třeba vytvořit. Tato databáze se bude skládat ze čtyř tabulek. Bude se týkat filmů, režisérů, herců a jejich obsazení. Proto je třeba vytvořit čtyři tabulky a postupně do nich vkládat potřebné údaje. Důležité také je si nejprve udělat pár diagramů, které budou popisovat to, jak spolu tabulky navzájem souvisí. 19
6.1 Diagram + + + + filmy FilmID FilmNazev FilmRok ReziserID : int : text : int : int + + + reziseri ReziserID ReziserJmeno ReziserPrijmeni : int : text : text + + obsazenifilmu HerciID FilmID : int : int + + + herci HerciID HerecJmeno HerecPrijmeni : int : text : text Obr. 7 Diagram Na obr. 7 máme diagram obsahující 4 třídy. Třídy jsou filmy, herci, reziseri a obsazenifilmu. Atributy, které charakterizují vlastnosti objektu, jsou položky v každé třídě. Třída filmy má atributy FilmID, FilmNazev, FilmRok, ReziserID. Třída herci má atributy HerecID, HerecJmeno a HerecPrijmeni. Třída režiséři má atributy ReziserID, ReziserJmeno a ReziserPrijmeni.A poslední třída obsazenifilmu má atributy HerecID a FilmID. Následně podle tohoto diagramu vytvoříme tabulky v databázi, které budou stejného názvu a budou obsahovat stejné atributy. 20
6.2 Tvorba tabulek Nyní můžeme začít tabulky vytvářet v phpmyadmin. Musíme být v naší vytvořené databázi db a tam máme možnost vytvoření nové tabulky, jak vidíme na obr. 8. Obr. 8 Tvorba tabulek Obr. 9 Tabulka filmy Na obr. 9 máme tabulku filmů, kterou jsme si nastavili na 4 sloupce, tyto sloupce obsahují: Název sloupce: FilmID samostatně generované ID filmu FilmNazev název filmu FilmRok rok vydání filmu ReziserID přidělení režiséra filmu 21
Typ proměnné: INT int je synonymem pro integer, což nám nastavuje číselný typ proměnné TEXT proměnná typu text Délka/Množina: Délka udává celkový počet znaků, které můžeme zadat do daného pole. V databázi je defaultně nastavený minimální a maximální počet znaků při různých typech proměnné. Například proměnná typu INT má minimální počet znaků -2147483648 a maximální 2147483648. Index: PRIMARY určuje primární klíč v tabulce. Primární klíč unikátně identifikuje jednotlivé záznamy tabulky, zabraňuje vzniku duplicitních záznamů a pomáhá při vytváření vazeb mezi tabulkami. Každá tabulka musí mít pouze jeden primární klíč. Auto_increment: Atribut AUTO_INCREMENT lze použít k vytvoření jedinečné identity pro nové řádky. Tyto údaje se nám budou samostatně generovat. Obr. 10 Tabulka reziseri Na obr. 10 máme tabulku reziseri, která se skládá ze 3 sloupců, kde zadáváme RaziserID typu int samostatně generované, proto auto_increment a primární klíč, ReziserJmeno typu text a stejně tak i ReziserPrijmeni. 22
Obr. 11 Tabulka herci Obr. 11 Tabulka herci je obdobná jako tabulka reziseri. Udáváme zde HerecID, HerecJmeno a HerecPrijmeni se stejnými údaji jako u režisérů a také zde bude primárním klíčem HerecID a samostatně generované. Obr. 12 Tabulka obsazenifilmu Na obr. 12 tabulka slučuje dohromady herce a filmy pomocí jejich vygenerovaných ID. Proto nezadáváme auto_increment, což je již generované v předchozích tabulkách a nemáme zde primární klíč. 23
6.3 Plnění tabulek Nyní máme vytvořenou databázi včetně tabulek, kam můžeme, buď přímo na localhostu, nebo pomocí vytvořených skriptů, vkládat informace o filmech, hercích a režisérech. Nejprve si ale ukážeme vkládání přímo v phpmyadmin, kde stále pracujeme s naší databází. Vkládat informace budeme tak, že si najedeme na příslušnou tabulku a v pravém aktivním okně zjistíme, že tato tabulka je prozatím prázdná. V tomto okně máme několik záložek. Pro nás je nyní nejdůležitější pátá záložka Vložit. Tato záložka obsahuje tabulky, do kterých budeme vkládat údaje. Pomocí tlačítka Proveď se tato akce uloží a zůstane v tabulce, kde ji později můžeme upravovat nebo mazat. Je důležité, abychom nejprve vložili režiséra, kde se nám vygeneruje jeho přidělené ID, které následně použijeme do tabulky filmů. A nejdříve vložíme také herce, jejichž ID použijeme do tabulky obsazenifilmu. Obr. 13 Vložení režiséra Na obr. 13 máme již předpřipravené kolonky, které jsme vtvořili při vkládání tabulek a nyní je budeme zaplňovat údaji. V tabulce reziseri máme uvedené ID, které je označené jako primární a zadané auto_increment, které nám ID samostatně generuje. Dále do sloupečku hodnot zadáme jméno a příjmení režiséra a zadáme Proveď. Tímto příkazem jsme vložili prvního režiséra do naší databáze a dále můžeme pokračovat vkládáním filmu, pro který už máme vygenerované ID režiséra. 24
Obr. 14 Vložení filmu Na obr. 14 máme FilmID, což jsme označili jako primární a zadali auto_increment, tudíž se nám tato hodnota bude sama generovat a není třeba ji vyplňovat. První film bude mít ID rovno 1, druhý film ID rovno 2 a takhle to bude pokračovat u každého vloženého filmu. Údaje vkládáme do sloupce hodnot. Takže zadáme název filmu, rok vydání filmu a ID režiséra, kterého jsme již vložili do tabulky reziseri. V našem případě se jedná o číslo 1, jelikož se jednalo o prvního vloženého režiséra. Nyní můžeme pokračovat dalším vkládáním a to herců. Obr. 15 Vložení herce U herců postupujeme stejně jako u režisérů a to pouze vložením jména a příjmení. ID bude opět vygenerováno. Akci dokončíme tlačítkem Proveď. Toto ID použijeme v následující tabulce obsazenifilmu, kde budeme přidělovat vložené herce příslušnému filmu. 25
Obr. 16 Přiřazení herců filmu Na obr. 16 přiřazujeme vytvořené herce daným filmům dle toho, kolik jsme vytvořili herců, přidělíme jejich ID příslušnému filmu. Pokud máme například vytvořených 5 herců pro jeden film, budeme zadávat vždy HerecID = 1 a FilmID = 1, HerecID = 2, FilmID = 1 a takhle budeme pokračovat pro zbylé tři herce. Je třeba, abychom si správně pamatovali příslušná ID a poté je správně navzájem přidělili. Opět tlačítkem Proveď se tato akce uloží do příslušné tabulky. Nyní máme tabulky naplněny alespoň jedním filmem včetně herců a jeho režiséra a takto můžeme pokračovat dále. Nebo si můžeme již tuto databázi plnit pomocí PHP skriptů, které si vytvoříme v nainstalovaném PSPadu. 26
7. Skripty PHP Nyní vytvoříme skripty pro různou práci s databází. První tři skripty budou pro vkládání nových filmů, herců a režisérů. Tyto skripty jsou uloženy v příloze práce. Další skripty jsou pro náhled do všech tabulek a jejich dat, mazání jejich obsahu a různých vyhledávání. Všechny skripty je třeba mít uložené ve složce htdocs, která se nachází v nainstalovaném souboru xampp, aby nám tyto vše správně fungovalo na webu. A abychom mohli vidět jejich obsah ve formátu HTML. Nyní si můžeme procházet webovými stránkami vytvořené databáze a zkoušet jejich funkčnost. Pomocí těchto skriptů můžeme vkládat další informace do databáze nebo je mazat, prohlížet si různými způsoby obsah tabulek. Abychom si tyto stránky mohli prohlížet, je třeba na webu vložit http://127.0.0.1/*.php nebo http://localhost/*.php, kde hvězdička nahrazuje název skriptu, který máme uložený v htdocs. Pokud máme nějakou chybu nebo špatně napsaný dotaz, zde je to správné místo, kde se to dozvíme. Může nám to vypsat například takovouto chybu: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\vloz_herce.php on line 25 je zde název souboru (vloz_herce), ve kterém chyba je a číslo řádku, kde se nachází. V PSPadu máme řádky číslované, takže není problém tuto chybu dohledat a opravit. Takto postupujeme do té doby, dokud se nám nezobrazí správný obsah bez chyb. 27
7.1 Úvod skriptů Počátek a konec každého skriptu bude stejný. Nejprve je třeba uvést hlavní strukturu dokumentu. Mezi hlavní strukturu dokumentu patří určité HTML tagy, což jsou znaky, které potřebujeme pro tvorbu webových stránek. Na obr. 17 vidíme základní tagy. HTML tagy vždy začínají špičatou závorkou < a končí špičatou závorkou >. Tyto tagy je možné libovolně vnořovat. (např. <head><title>titulek stránky</title></head>). Obr. 17 Tagy HTML HTML musí být na začátku a konci každého skriptu nebo vytvořené stránky, označují celý dokument stránky HEAD - jedná se o hlavičku stránky, může zde být napsaný text, který bude uvedený na počátku stránky TITLE zde je uveden název stránky, který se zobrazuje v horní liště stránek, jedná se o název stránky BODY označuje tělo dané stránky, kam se vkládají veškeré informace, které budou na stránkách uvedeny <??> - zde budeme bude tělo PHP skriptu 28
7.2 Připojení a odpojení databáze Toto je připojení k naší databázi MySQL, kterou máme spuštěnou na serveru localhost. Root je uživatelské jméno do databáze a dále zde může být uvedené heslo do databáze, které my nemáme nastavené a uvedené. Do proměnné $databaze připojíme příslušnou databázi, kde máme vytvořené naše vlastní tabulky. A poslední je samostatné připojení do databáze. Pokud se chceme od databáze odpojit, zadáme tento příkaz: Proměnná při odpojení od databáze musí být vždy ta, kterou jsme si definovali na začátku skriptu při připojovaní. V našem případě se jedná o proměnnou $id_spojeni. 29
8. Web Na webových stránkách našeho prohlížeče si nyní můžeme prohlížet formuláře, které jsme vytvořili pomocí skriptů. 8.1 Formulář herci První formulář je pro vkládání nových herců do databáze, hned nahoře máme informaci o tom, že databáze je správně připojena a můžeme s ní pracovat. Dále vidíme název formuláře a k čemu slouží, což je pouze formalita, která není pro funkčnost potřeba. Jsou zde 2 pole pro vložení jména a příjmení herce a dále jedno rolovací menu, které slouží pro přidělení herce tomu správnému filmu. Když máme všechny údaje vyplněné, postačí zmáčknout tlačítko Odeslat a tyto informace se nám uloží do databáze v phpmyadmin. Obr. 18 Vkládání herců na webu 30
Skript, který nám vytvořil tento formulář: Počátek skriptu: Připojení k databázi: SQL dotaz pro vypsání filmů a počet získaných řádků: Podmínka pro úspěšnost připojení databáze: Název skriptu zobrazovaný na webové stránce: Textové pole a rolovací menu: 31
Nabídka filmů: Tlačítko odeslat: Podmínka pro vyplnění všech údajů: SQL příkaz pro vložení vyplněných údajů a jeho zobrazení: Podmínka pro zjištění úspěšnosti dotazu: Konec skriptu: 32
8.2 Formulář režiséři Další formulář je podobný a je pro vkládání režisérů. Zde stačí uvést pouze jméno a příjmení, ale nemusíme ho přidělovat žádnému filmu, jelikož při pozdějším vkládání filmů, budeme přidělovat režiséry. Je proto důležité, pokud budeme chtít vkládat všechny informace o filmech včetně režiséra a herců, abychom nejprve vložili režiséra, později film a nakonec herce. Skript má opět informaci o připojení k databázi, napsanou jeho funkci, dvě pole pro vložení jména a příjmení a tlačítko odeslat, kterým akci potvrdíme a uložíme. Obr. 19 Vkládání režisérů na webu 8.3 Formulář filmy Třetím skriptem pro vkládání informací je vkládání filmů. Opět zde máme dvě pole, pro název filmu a rok jeho vydání. A dále rozbalovací menu, které slouží pro přidělení správného režiséra, který již musí být v databázi uložen. Akci potvrdíme tlačítkem Odeslat. Obr. 20 Vkládání filmů na webu 33
8.4 Formulář pro nahlížení do tabulek Dalším skriptem si můžeme například vytvořit takovouto stránku, kde můžeme nahlížet do všech tabulek zároveň a rovnat si je dle jejich ID buď sestupně, nebo vzestupně, k čemuž jsme opět využili rolovacího menu pro výběr. Vidíme tedy všechny tři tabulky a jejich obsahy. Obr. 21 Formulář tabulek 34
8.5 Formulář hledej Formulář hledej, slouží k vyhledávání filmů dle počátečního písmena. Do pole pro psaní zadáme počáteční písmeno filmu, který hledáme a pokud bude film v databázi, uvidíme SQL dotaz, který provádíme. Dále se nám vygeneruje tabulka, která bude obsahovat uvedený film včetně jeho herců a režiséra. Pokud by uvedený film databáze neobsahovala, výsledek dotazu by měl 0 řádků a tabulka by zůstala prázdná. Obr. 22 Formulář pro hledání filmů na webu 35
8.6 Formulář mazání Když už máme vytvořený skript pro vkládání informací, tak si vytvoříme další skript, který bude sloužit pro mazání dat vložených filmů. Skládá se z informace o připojení databáze, názvu skriptu, popis funkce skriptu a samotného rolovacího menu, kde si vybere film, který je uložený v databázi a tlačítkem smaž se akce provede. Obr. 23 Formulář pro mazání na webu Těchto skriptů můžeme vytvořit několik pro různou práci s databází. A stejným způsobem vkládat na web a kontrolovat jejich funkčnost. Pomáhá nám to v práci s databází. 36
9. E-learning E-learning je vzdělávací proces, který využívá informační technologie a nová multimédia pro tvorbu efektivních kurzů. E-learning slouží školám a firmám pro předávání informací a vzájemnou komunikaci. 10. Moodle Pro tvorbu e-learningového kurzu jsem si vybrala softwarový balík moodle, který je nabízený zdarma a naše škola ho využívá pro podporu výuky některých předmětů. Je možné zde vytvořit samostatný kurz, kde jsou k dispozici materiály pro studium. Moodle je open source softwarový balík, který slouží pro tvorbu online výukových kurzů. Autorem tohoto programu je Martin Dougiamas a první verze vyšla v roce 2002. Jedná se tedy o celkem nový program, který se dnes používá na celém světě. Moodle je určen pro školy, firmy a jiné vzdělávací instituce, které využívají online kurzy nebo diskusní fóra. 10.1 Využití V současné době je známo přes 50 000 využití moodlu ve více než 208 zemích světa. O čemž svědčí i uvedený graf, kde od počátku roku 2003 začalo využívání rapidně stoupat. Obr. 24 Statistika využití moodlu [8] 37
10.2 Registrace do moodlu Moodle má několik funkcí, které přináší do novodobého studia. Nejprve je potřeba, abychom se zaregistrovali, tím docílíme možnosti náhledu do kurzů. Pokud jsme na stránkách poprvé, je třeba si vytvořit nový účet, kde zadáme uživatelské jméno a heslo pro přihlášení a naši emailovou adresu, na kterou nám přijde potvrzení o registraci. Po úspěšném založení účtu se budeme klasicky opětovně přihlašovat pod zvoleným uživatelským jménem a heslem. Obr. 25 Registrace v moodlu Kurzy jsou buď volně přístupné, nebo jsou chráněny heslem. Dále zde máme rozdělenou funkci profesor a student. Profesor má přidělena práva pro zakládání, tvoření a měnění kurzů, kdežto student má tyto práva omezena. Může kurzy navštěvovat, vyžívat materiály a přispívat pouze do určitých témat. Tyto funkce rozděluje správce, který se stará o nastavení a funkčnost moodlu. 38
10.3 Rozdělení kurzu Obr. 26 Úvodní strana kurzu Kurz je rozděleny do tří sloupců. Tyto části jsou defaultně nastaveny, ale je možné je různě upravovat, přidávat a odebírat z možné nabídky, která je uvedena v pravém sloupci. Prostřední část je vyhrazena samotnému obsahu kurzu. V levé části máme několik funkcí, které budeme využívat. Jedná se například o nahlédnutí mezi účastníky kurzu, na fórum, nebo vyhledávání informací. Dále je zde správa našeho kurzu, která nám pomáhá dotvářet kurz dle našich představ: režim úprav, nastavení, role, skupiny, záloha, obnova, import, reset, protokoly, úlohy, škály, soubory a známky. V pravé části kurzu máme uvedené novinky, události a činnosti a dále bloky, které je možné přidávat pro lepší přehlednost, například kalendáře, klíčová slova, nástroje a další. Bloky můžeme také přesouvat zleva doprava. Pro veškerou práci s kurzem je třeba, abychom měli zapnutý režim úprav. 39
10.4 Správa moodlu Režim úprav nám umožňuje vkládat různé typy studijních materiálů. Vložení textové stránky přímo do kurzu bez jakýchkoliv úprav, webové stránky s pokročilejší strukturalizací, popřípadě pouze odkaz na web nebo vložení vlastního souboru do kurzu. Nastavení se týká kurzu jako takového. Název kurzu, dálka kurzu, zápis studentů a další. Kurz je zde možné rozdělit do týdnů nebo témat a podobně. Dále zde můžeme spravovat délku kurzu, nahlížet na studenty v kurzu a hodnotit jejich výkony. 10.5 Obsah kurzu Do tohoto kurzu jsem vkládala vlastní prezentace vytvořené v Microsoft Office PowerPointu. Jedná se o prezentace ohledně PHP, instalací potřebného softwaru pro tvorbu databáze. K nahlédnutí jsou zde skripty PHP, pomocí kterých se pracuje s databází. A dále jsem využila programu Wink, který mi pomohl při vysvětlení tvorby databáze. Wink Wink je program, který slouží k tvorbě návodů a prezentací na základě zachycených obrazovek, pohybu myši a přidání vysvětlivek nebo audia k prováděné práci. Jedná se o volně dostupný program ke stažení na stránkách: http://www.debugmode.com/wink/download.php. Vstupní formáty: Snímky obrazovky PC nebo obrázky ve formátech BMP/JPG/PNG/TIFF/GIF. Výstupní formáty: Export jako Macromedia Flash, Standalone EXE (spustitelný soubor), PDF, PostScript, HTML nebo výše uvedené formáty obrázků. [14] 40
Obr. 27 Kurz PHP a MySQL Já jsem si nejprve v moodlu založila kurz, který jsem nazvala E-learning BC. V tomto kurzu jsou popsané základy PHP a MySQL. Jsou zde slidy, které názorně popisují nejen přípravu, ale i samotné psaní PHP kódů. Kurz jsem rozdělila do 6 tématických celků. První část se týká popisu PHP a jeho vývoje, jsou zde uvedeny k porovnání další skriptovací jazyky a popsaná databáze, kterou využíváme pro tvorbu stránek. V druhé části máme návod na instalaci potřebných programů a nastavení pro správné připojení k databázi. Třetí část obsahuje soubory vytvořené v programu wink, které popisují tvorbu samotné databáze a tabulek. Ve čtvrté části jsou vložené vytvořené skripty PHP. A v poslední páté části jsou uvedené formuláře tak, jak si je můžeme prohlížet na webu. Kurz má sloužit pro pochopení PHP a MySQL. 41
11. Závěr Ve své práci se zabývám technologií PHP a MySQL. Pro pochopení těchto technologií jsem vytvořila kurz v moodlu, který obsahuje veškeré poznatky z této práce. Díky zpracování by měl tento kurz sloužit jako pomůcka při výuce. Práce začíná porovnáním skriptovacích jazyků. Já jsem si z těchto jazyků vybrala PHP, které je zde vysvětlené od počátku vzniku, až po tvorbu skriptů a jejich funkci. Dále zde vysvětluji funkci databází a jejich rozdělení. Hlavně jsem se zaměřila na databázi MySQL. Popsala jsem její vznik a výhody. Práce pokračuje popisem instalace aplikací, které jsou potřeba k připojení a práci s databází. Mezi tyto aplikace patří xampp. Díky xamppu můžeme pracovat na webovém serveru localhost, kde tvoříme vlastní databázi a tabulky v ní. Další aplikaci, kterou potřebujeme je PSPad, což je textový editor, ve kterém vytváříme PHP skripty. V praktické části mé práce se zabývám tvorbou databáze a tabulek na localhostu, které jsem zdokumentovala pomocí programu wink a tuto dokumentaci vložila do vytvořeného kurzu v moodlu. Po kompletním dokončení databáze jsem napsala skripty php. Pomocí těchto skriptů jsem vytvořila formuláře na web a popsala jejich funkci. Ke konci práce jsem popsala využití a funkce moodlu, který jsem si vybrala pro tvorbu e-learningového kurzu Veškeré poznatky a dokumentace jsem vložila do vytvořeného kurzu v moodlu, který je nazvaný E-learning BC a volně dostupný na moodle.sks.cz. Tento kurz obsahuje 6 tématických celků, které postupně popisují tvorbu webové aplikace. Do příloh práce jsem vložila vytvořené php skripty. 42
12. Seznam obrázků Obr. 1 Xampp Control Panel Application... 15 Obr. 2 Povolení portu v bráně Firewallu... 16 Obr. 3 phpmyadmin... 17 Obr. 4 PSPad... 18 Obr. 5 Tvorba databáze... 19 Obr. 6 Databáze bez tabulek... 19 Obr. 7 Diagram... 20 Obr. 8 Tvorba tabulek... 21 Obr. 9 Tabulka filmy... 21 Obr. 10 Tabulka reziseri... 22 Obr. 11 Tabulka herci... 23 Obr. 12 Tabulka obsazenifilmu... 23 Obr. 13 Vložení režiséra... 24 Obr. 14 Vložení filmu... 25 Obr. 15 Vložení herce... 25 Obr. 16 Přiřazení herců filmu... 26 Obr. 17 Tagy HTML... 28 Obr. 18 Vkládání herců na webu... 30 Obr. 19 Vkládání režisérů na webu... 33 Obr. 20 Vkládání filmů na webu... 33 Obr. 21 Formulář tabulek... 34 Obr. 22 Formulář pro hledání filmů na webu... 35 Obr. 23 Formulář pro mazání na webu... 36 Obr. 24 Statistika využití moodlu [8]... 37 Obr. 25 Registrace v moodlu... 38 Obr. 26 Úvodní strana kurzu... 39 Obr. 27 Kurz PHP a MySQL... 41 43
13. Seznam použitých zdrojů [1] About Moodle [online]. 2009 [cit. 2009-05-02]. Dostupný z WWW: <http://docs.moodle.org/en/about_moodle>. [2] DAŘENA, František. Myslíme v jazyku Perl. [s.l.] : Grada Publishing a.s., 2005. 55 s. ISBN 8024711478 [3] DeLisle, Marc. PhpMyAdmin efektivní správa MySQL. Brno : Zoner Press, 2004. 264 s. ISBN 80-86815-09-9. [4] FIALA, Jan. PSPad [online]. c2001-2009 [cit. 2009-05-02]. Dostupný z WWW: < http://www.pspad.com/cz/>. [5] FIALA, Jan. PSPad - další z řady textových editorů [online]. 2004 [cit. 2009-05-02]. Dostupný z WWW: <http://interval.cz/clanky/pspad-dalsi-z-rady-textovych-editoru/>. ISSN 1212-8651. [6] HERNANDEZ, Michael J. Návrh databází. 1. vyd. Praha : Grada Publishing a.s., 2006. 408 s. ISBN 80-247-0900-7. [7] Moodle [online]. 2009 [cit. 2009-05-02]. Dostupný z WWW: <http://cs.wikipedia.org/wiki/moodle>. [8] Moodle statistic [online]. 2009 [cit. 2009-05-02]. Dostupný z WWW: <http://moodle.org/stats/>. [9] MySQL [online]. 2009 [cit. 2009-05-02]. Dostupný z WWW: < http://cs.wikipedia.org/wiki/mysql>. [10] OPPEL, Andrew. Databáze bez předchozích znalostí. Brno : Computer Press, a.s., 2006. 319 s. ISBN 80-251-1199-7. [11] PHP [online]. 2009 [cit. 2009-05-02]. Dostupný z WWW: <http://cs.wikipedia.org/wiki/php>. [12] PONKRÁC, Miloslav. PHP a MySQL bez předchozích znalostí. Brno : Computer Press a.s., 2007. 221 s. ISBN 978-80-251-1758-3. [13] Python [online]. 2009, [cit. 2009-05-02]. Dostupný z WWW: <http://cs.wikipedia.org/wiki/python>. [14] SATISH, Kumar. Wink [online]. c2008 [cit. 2009-05-02]. Dostupný z WWW: <http://debugmode.com/wink/>. [15] SEIDLER, Kai. Xampp [online]. c2002-2009, 14.4.20009 [cit. 2009-05-02]. Dostupný z WWW: <http://www.apachefriends.org/en/xampp.html>. [16] WELLING, Luke, THOMSON, Laura. PHP a MySQL - rozvoj webových aplikací. Praha : SoftPress s.r.o., 2002. 718 s. ISBN 80-86497-20-8. [17] Zend: The PHP Company [online]. c2009 [cit. 2009-05-02]. Dostupný z WWW: <http://www.zend.com/en/>. 44
14. Přílohy 14.1 Vložení herce <html> <head> <title>databaze</title> </head> <body> <? //Připojení se k databázi $id_spojeni = mysql_connect("localhost", "root", ""); //kde localhost je adresa počítače, kde je puštěná databáze //root je uživatelské jméno pro přístup k ní //prázdné uvozovky jsou heslo, v našem případě žádné není zadáno $databaze = "db"; $pripojit = mysql_select_db($databaze); //vybereme databázi // připojení k databázi $dotaz_pro_seznam = "SELECT FilmNazev FROM filmy "; //vytvoříme si dotaz, který nám vypíše všechny možné filmy $vysledek_pro_seznam = mysql_query($dotaz_pro_seznam); // provedení dotazu $pocet_vysledku_seznamu = mysql_num_rows($vysledek_pro_seznam); // počet získaných řádků if ($pripojit == 1): echo("databáze je připojena. <hr>"); else: echo("chyba v připojení k databázi! <hr>"); endif; //podmínka připojení databáze echo("<h1>herci</h1> //název skriptu, který se bude zobrazovat na stránce <li>formulář pro vkládání herců do databáze <br><br><br>"); //vytvoříme si několik textových polí //textové pole pro ID chybí, protože se přiřazuje automaticky echo("<form method=post><p> Jméno: <input type=text name=herecjmeno size=20><br> Příjmení: <input type=text name=herecprijmeni size=30><br> Vyberte filmy: <select name=volba>"); //rolovací menu pro výběr filmu for ($i=0; $i <$pocet_vysledku_seznamu; $i++) { $row = mysql_fetch_array($vysledek_pro_seznam); echo "<option>".$row['filmnazev']."</option>"; } echo("<br> <input type=submit value=odeslat> </form>"); // tlačítko odeslat $jmeno = $HTTP_POST_VARS['HerecJmeno']; $prijmeni = $HTTP_POST_VARS['HerecPrijmeni']; if ((!$jmeno) (!$prijmeni)): //hláška pro nutnost vyplnění všech údajů 45
echo("všechny údaje je nutné vyplnit."); exit(); endif; $dotaz = ("INSERT INTO herci (HerecJmeno, HerecPrijmeni) VALUES ('$jmeno', '$prijmeni') "); $VysledekDotazu = mysql_query($dotaz); //příkaz k provedení dotazu echo("provádím dotaz: <br>".$dotaz. "<br><br>"); //zobrazíme dotaz if ($VysledekDotazu == 1): echo ("Data uspesne vlozena!"); else: echo ("Chyba!!"); endif;?> </body> </html> //podmínka pro zjištění úspěšnosti dotazu 46
14.2 Vložení režiséra <html> <head> <title>databaze</title> </head> <body> <? //Připojení se k databázi $id_spojeni = mysql_connect("localhost", "root", ""); //kde localhost je adresa počítače, kde je puštěná databáze, //root je uživatelské jméno pro přístup k ní //prázdné uvozovky jsou heslo, v našem případě žádné není zadáno $databaze = "db"; $pripojit = mysql_select_db($databaze); //vybereme databázi //připojení k této databázi if ($pripojit == 1): //podmínka pro úspěšnost připojení databáze echo("databáze je připojena. <hr>"); else: echo("chyba v připojení k databázi! <hr>"); endif; echo("<h1>režiséři</h1> <li>formulář pro vkládání režisérů do databáze <br><br><br>"); //vytvoříme si několik textových polí //textové pole pro ID chybí, protože se přiřazuje automaticky echo("<form method=post><p> Jméno: <input type=text name=reziserjmeno size=20><br> Příjmení: <input type=text name=reziserprijmeni size=30><br> <p><input type=submit value=odeslat name=b1></p> </form>"); $jmeno = $HTTP_POST_VARS['ReziserJmeno']; $prijmeni = $HTTP_POST_VARS['ReziserPrijmeni']; if ((!$jmeno) (!$prijmeni)): //hláška pro nutnost vyplnění všech údajů 47
echo("všechny údaje je nutné vyplnit."); exit(); endif; $dotaz = ("INSERT INTO reziseri (ReziserJmeno, ReziserPrijmeni) VALUES ('$jmeno', '$prijmeni') "); $VysledekDotazu = mysql_query($dotaz); //příkaz k provedení dotazu echo("provádím dotaz: <br>".$dotaz. "<br><br>"); //zobrazíme dotaz if ($VysledekDotazu == 1): echo ("Data uspesne vlozena!"); else: echo ("Chyba!!"); endif;?> </body> </html> //podmínka pro zjištění úspěšnosti dotazu 48
14.3 Vložení filmu <html> <head> <title>databaze</title> </head> <body> <? //Připojení se k databázi $id_spojeni = mysql_connect("localhost", "root", ""); //kde localhost je adresa počítače, kde je puštěná databáze //root je uživatelské jméno pro přístup k ní //prázdné uvozovky jsou heslo, v našem případě žádné není $databaze = "db"; $pripojit = mysql_select_db($databaze); //vybereme databázi //připojení k databázi $dotaz_pro_seznam = "SELECT ReziserPrijmeni FROM reziseri "; //vytvoříme si dotaz, který nám vypíše všechny možné režiséry $vysledek_pro_seznam = mysql_query($dotaz_pro_seznam); // provedení dotazu $pocet_vysledku_seznamu = mysql_num_rows($vysledek_pro_seznam); // počet získaných řádků if ($pripojit == 1): //podmínka pro úspěšnost připojení databáze echo("databáze je připojena. <hr>"); else: echo("chyba v připojení k databázi! <hr>"); endif; echo("<h1>filmy</h1> <li>formulář pro vkládání filmů do databáze <br><br><br>"); //vytvoříme si několik textových polí //textové pole pro ID chybí, protože se přiřazuje automaticky echo("<form method=post><p> Název: <input type=text name=filmnazev size=50><br> Rok: <input type=text name=filmrok size=4><br> 49
Vyberte kategorii: <select name=volba>"); for ($i=0; $i <$pocet_vysledku_seznamu; $i++) { $row = mysql_fetch_array($vysledek_pro_seznam); echo "<option>".$row['reziserprijmeni']."</option>"; } echo("<br> <input type=submit value=odeslat> </form>"); $nazev = $HTTP_POST_VARS['FilmNazev']; $rok = $HTTP_POST_VARS['FilmRok']; if ((!$nazev) (!$rok)): //hláška pro nutnost vyplnění všech údajů echo("všechny údaje je nutné vyplnit."); exit(); endif; $dotaz = ("INSERT INTO filmy (FilmNazev, FilmRok) VALUES ('$nazev', '$rok') "); $VysledekDotazu = mysql_query($dotaz); //příkaz k provedení dotazu echo("provádím dotaz: <br>".$dotaz. "<br><br>"); //zobrazíme dotaz if ($VysledekDotazu == 1): //podmínka pro zjištění úspěšnosti dotazu echo ("Data uspesne vlozena!"); else: echo ("Chyba!!"); endif;?> </body> </html> 50
14.4 Obsah tabulek <html> <head> <title>databaze</title> </head> <body> <? $id_spojeni = mysql_connect("localhost", "root", ""); $databaze = "db"; $pripojit = mysql_select_db($databaze); if ($pripojit == 1): echo("databáze je připojena. <hr>"); else: echo("chyba v připojení k databázi! <hr>"); endif; echo("</table><hr>"); echo("<form method=post> <p>seřadit filmy dle ID: <select size=1 name='filmid'> <option value=asc>vzestupně</option> <option value=desc>sestupně</option> </select> <input type=submit value=odeslat><br> </form> "); echo("<form method=post> <p>seřadit herce dle ID: <select size=1 name='herecid'> <option value=asc>vzestupně</option> <option value=desc>sestupně</option> </select> <input type=submit value=odeslat><br> </form> "); 51
echo("<form method=post> Seřadit rezisery dle ID: <select size=1 name='reziserid'> <option value=asc>vzestupně</option> <option value=desc>sestupně</option> </select> <input type=submit value=odeslat><br> </form> "); $filmy = $HTTP_POST_VARS['FilmID']; $herci = $HTTP_POST_VARS['HerecID']; $reziseri = $HTTP_POST_VARS['ReziserID']; $dotaz1=("select * from filmy order by FilmID $filmy"); $vysledek1=mysql_query($dotaz1); $pocet1=mysql_num_rows($vysledek1); $dotaz2= ("select * from herci order by HerecID $herci"); $vysledek2=mysql_query($dotaz2); $pocet2=mysql_num_rows($vysledek2); $dotaz3= ("select * from reziseri order by ReziserID $reziseri"); $vysledek3=mysql_query($dotaz3); $pocet3=mysql_num_rows($vysledek3); echo("tabulka filmy má ".$pocet1. " záznamů, tabulka herci má ".$pocet3. " záznamů a tabulka reziseri má ".$pocet2. " záznamů.<br><br>"); echo("<b>filmy</b><br><br> <table border=\"1\"> <tr> <td><b>filmid</b></td> <td><b>filmnazev</b></td> <td><b>filmrok</b></td> </tr> <tr> "); for ($i=0; $i <$pocet1; $i++) { $row = mysql_fetch_array($vysledek1); echo '<tr>'; echo '<td>'.$row['filmid'].'</td>'; echo '<td>'.$row['filmnazev'].'</td>'; 52
echo '<td>'.$row['filmrok'].'</td>'; echo '</tr>'; } echo("</table>"); echo("<br><b>herci</b><br><br> <table border=\"1\"> <tr><td><b>herecid</b></td> <td><b>herecjmeno</b></td> <td><b>herecprijmeni</b></td> </tr> <tr> "); for ($i=0; $i <$pocet2; $i++) { $row = mysql_fetch_array($vysledek2); echo '<tr>'; echo '<td>'.$row['herecid'].'</td>'; echo '<td>'.$row['herecjmeno'].'</td>'; echo '<td>'.$row['herecprijmeni'].'</td>'; echo '</tr>'; } echo("</table>"); echo("<br><b>reziseri</b><br><br> <table border=\"1\"> <tr> <td><b>reziserid</b></td> <td><b>reziserjmeno</b></td> <td><b>reziserprijmeni</b></td> </tr> <tr> "); for ($i=0; $i <$pocet3; $i++) { $row = mysql_fetch_array($vysledek3); echo '<tr>'; echo '<td>'.$row['reziserid'].'</td>'; echo '<td>'.$row['reziserjmeno'].'</td>'; echo '<td>'.$row['reziserprijmeni'].'</td>'; echo '</tr>'; } echo("</table>");?> </body> </html> 53
14.5 Hledání filmů <html> <head> <title>databaze</title> </head> <body> <? //Připojení se k databázi $id_spojeni = mysql_connect("localhost", "root", ""); $databaze = "db"; $pripojit = mysql_select_db($databaze); if ($pripojit == 1): // podmínka pro připojení databáze echo("databáze je připojena. <hr>"); else: echo("chyba v připojení k databázi! <hr>"); endif; echo("<h1>hledej</h1> <li>seznam filmů začínající na zvolené písmeno <br><br><br>"); //tyto čtyři řádky nám vloží textové pole, kam bude uživatel psát a tlačítko pro odeslání echo("<form method=post> <p><input type=text name=zacinajicipismeno size=10> <input type=submit value=odeslat></p> </form>"); $pismenko = $HTTP_POST_VARS['zacinajicipismeno']; if ($pismenko == ""): exit(); endif; $dotaz = ("SELECT FilmNazev, FilmRok, ReziserJmeno, ReziserPrijmeni, HerecJmeno, HerecPrijmeni FROM filmy, reziseri, herci, obsazenifilmu WHERE filmy.reziserid=reziseri.reziserid and herci.herecid=obsazenifilmu.herecid and 54
obsazenifilmu.filmid=filmy.filmid and FilmNazev LIKE '$pismenko%'"); $VysledekDotazu = mysql_query($dotaz); //příkaz k provedení dotazu $PocetRadku = mysql_num_rows($vysledekdotazu echo("provádím dotaz: <br>".$dotaz. "<br><br>"); //zobrazíme dotaz echo("výsledek dotazu má ".$PocetRadku. " řádků.<br><br>"); //tabulka echo(" <table border=\"1\"> <tr> <td><b>film</b></td> <td><b>rok</b></td> <td><b>herec</b></td> <td><b>reziser</b></td> </tr> <tr> "); for ($i=0; $i <$PocetRadku; $i++) { $row = mysql_fetch_array($vysledekdotazu); echo '<tr>'; echo '<td>'.$row['filmnazev'].'</td>'; echo '<td>'.$row['filmrok'].'</td>'; echo '<td>'.$row['herecjmeno']. ' '.$row['herecprijmeni']. '</td>'; echo '<td>'.$row['reziserjmeno']. ' '.$row['reziserprijmeni']. '</td>'; echo '</tr>'; } echo("</table><hr>");?> </body> </html> 55