Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze
Kapitán Lukáš
Technologie SQL a PHP ve výuce
Bakalářská práce
2010
Prohlašuji, že jsem bakalářskou práci na téma Technologie SQL a PHP ve výuce, zpracoval samostatně a použil pouze zdrojů, které cituji a uvádím v seznamu použité literatury.
V Praze dne
Podpis
2
Obsah: Anotace .................................................................................................................... 5 Annotation................................................................................................................ 5 1. Úvod......................................................................................................................... 6 1.1 Cíl práce ............................................................................................................. 6 2. Teoretická část ......................................................................................................... 8 2.1 Typy používaných aplikačních software............................................................ 9 2.1.1 TASW ......................................................................................................... 9 2.1.2 IASW .......................................................................................................... 9 2.2 Analýza vhodného SW prostředí ..................................................................... 11 2.2.1 Volba SŘBD ............................................................................................. 11 2.2.2 MySQL...................................................................................................... 12 2.2.3 MS SQL .................................................................................................... 13 2.2.4 Oracle ........................................................................................................ 13 2.3 Volba skriptovacího jazyka.............................................................................. 13 2.3.1 Perl ............................................................................................................ 13 2.3.2 Něco z historie Perlu ................................................................................. 14 2.4 PHP .................................................................................................................. 14 2.4.1 Vznik jazyka PHP ..................................................................................... 14 2.4.2 Porovnání PHP a Perlu.............................................................................. 15 2.5 Volba serverového řešení................................................................................. 15 2.5.1 XAMPP ..................................................................................................... 15 2.6 Volba PHP editoru ........................................................................................... 16 2.6.1 PSPad ........................................................................................................ 16 2.6.2 Notepad++................................................................................................. 17 3. Faktura a její náležitosti ......................................................................................... 18 4. Formáty používané pro výměnu dat....................................................................... 21 4.1 HTML .............................................................................................................. 21 4.2 PDF .................................................................................................................. 21 4.3 RTF .................................................................................................................. 21 5. Databáze................................................................................................................. 23 5.1 Modely databázových systémů ........................................................................ 23 5.2 Základní normy tvorby databází ...................................................................... 25 3
6. Praktická část ......................................................................................................... 27 6.1 Popis aplikace................................................................................................... 28 6.2 Login ................................................................................................................ 28 6.3 Formulář faktury .............................................................................................. 31 6.4 Mapa webu ....................................................................................................... 35 6.5 UseCase aplikace ............................................................................................. 36 7. Závěr ...................................................................................................................... 37 8. Zdroje ..................................................................................................................... 38 9. Přílohy.................................................................................................................... 41 9.1 Seznam použitých termínů............................................................................... 42 9.2 Seznam použitých obrázků a tabulek............................................................... 43
4
Anotace Moje bakalářská práce se zabývá technologiemi PHP a MySQL. V teoretické části jsem se zaměřil na vysvětlení jednotlivých technologií. Popisuji zde několik dalších skriptovacích jazyků a také několik systémů řízení báze dat. V praktické části jsem vytvořil aplikaci, která znázorňuje praktickou ukázku využití těchto technologií.
Annotation My thesis deals with the technologies of PHP and MySQL. In the theoretical part, I focused on explaining the various technologies. I describe a few other scripting languages, and some database management systems. In the practical part I have created an application that illustrates the practical demonstration of these technologies.
5
1. Úvod Předložená práce se zabývá technologiemi PHP a MYSQL, které v dnešní době slouží především k vytváření dynamických webových aplikací. PHP technologie je skriptovací programovací
jazyk
určený především k psaní
dynamických webových stránek. PHP skripty jsou prováděny na straně serveru, k uživateli je přenášen až výsledek jejich činnosti. MySQL je SŘBD určený pro aplikace, které nevyžadují zásadní výkon. Výhodou je, že je pro nekomerční použití zdarma. Pro komunikaci s MySQL bude použit SQL, což je standardizovaný dotazovací jazyk pro práci s daty v relačních databázích. V teoretické části se zaměřím na porovnání dostupných SŘBD, základy SQL, PHP a podnikové informační systémy. V praktické části nejprve definuji úvodní příklad, na kterém přehledně popíši postup tvorby PHP aplikace spolupracující s SQL serverem a tím názorně ukážu souvislosti s podnikovým informačním systémem. Výsledná aplikace umožní generování výstupní sestavy ve formátu HTML, PDF nebo RTF. Vytvoření této didaktické pomůcky by mělo být nápomocno studentům lépe pochopit a využít tyto technologie a rozšířit jejich používání v pracovním procesu. Toto téma jsem si zvolil, protože si myslím, že tyto technologie mají v dnešní době silný vliv na celkovou produkci webových aplikací a je dobré, se s nimi blíže seznámit, čehož bych rád dosáhnul i touto cestou.
1.1 Cíl práce Cílem práce je realizovat praktický příklad umožňující předvedení použití technologie PHP a SQL ve výuce. Pro splnění uvedeného cíle jsem si stanovil tyto následující úkoly: •
Definovat jednoduchý příklad, na kterém je patrná nutnost exportu dat v různých formátech. Jako ilustrativní příklad jsem si vybral situaci, kdy malý živnostník chce evidovat vydané faktury a má potřebu je exportovat v různých výstupních formátech.
•
Vytvořit webový formulář, do něhož se uživatel musí nejdříve zaregistrovat a poté vyplní formulář pro fakturu, která se uživateli dále může zobrazit v HTML nebo vyexportovat ve zvoleném formátu PDF, 6
či RTF a uschovat. Do zmiňovaného systému uživatel může vstoupit pouze po přihlášení do systému. Přihlašovací údaje jsou ověřovány v databázi. Jestliže se uživatel nenachází v této databázi, není vpuštěn do systému.
7
2. Teoretická část
8
2.1 Typy používaných aplikačních software Pro tuto látku jsem čerpal ze zdroje [33]. Pod tímto pojmem se v informatice skrývá v podstatě celé programové vybavení počítače, se kterým je uživatel v přímém kontaktu. Úkolem pro tento software je předložit zpracované řešení specifického problému uživatele. Pro komunikaci s uživatelem je obyčejně zvoleno grafické či textové rozhraní v počítači. Aplikační software se může v některých případech skládat i z několika programů a tím pak tvoří takzvaný aplikační balíček, jinak také application suite. Příkladem takového balíčku je kancelářský balík OpenOffice.org a Microsoft Office. Do skupiny aplikačního software nepatří programy, které s uživatelem přímo nekomunikují (např. operační systém).
2.1.1 TASW Typový aplikační software je specifický aplikační software, který je zaměřený na konkrétní skupinu zákazníků na trhu. Ať už tou skupinou jsou stavbaři, strojaři či obchodníci, tento druh softwaru vždy obsahuje rámcovou skupinu modulů pro jejich obor. Pracovní procesy se ve firmách používajících TASW musí kompletně přizpůsobit procesům tak, jak pracuje software, což může být někdy problém. Na druhou stranu typový ASW poskytuje prověřenou a funkční strukturu, kterou prověřilo několik stovek spokojených klientů. Tento systém se také vyznačuje relativně krátkou dobou implementace. Taktéž je k dispozici technická podpora od dodavatele těchto systémů.
2.1.2 IASW Individuální aplikační software je software vytvářený naprosto od nuly podle potřeb zadavatele, respektuje přesně jeho potřeby a jeho funkčnost vychází z konzultace se zadavatelem (konečnými uživateli). Je vytvářen několika způsoby a to buď firmou, která tento software bude posléze využívat a která si chce touto cestou vše kontrolovat sama anebo si firma, která tento software chce používat, zvolí jinou firmu, která tento IASW pro ně zpracuje. Každá z těchto variant má svá pozitiva, ale je třeba zdůraznit, že jednou z hlavních výhod individuálního ASW je, že konkurence nezná slabá místa, ale pokud si zadavatel nechá systém naprogramovat od externích programátorů, pak tato výhoda ztrácí význam.
9
Vlastnosti
TASW
IASW
Náklady na vývoj a správu
Minimální
Značně vyšší
Reakce na změny (př. DPH)
Rychlé
Značně náročné
Přizpůsobení
Zabezpečení
Podnik se musí přizpůsobit softwaru Známá slabá místa
Software je maximálně přizpůsoben podnikovým procesům Slabá místa jsou skrytá Pouze tvůrce programu –
HelpDesk
Předplacený
pokud odejde z firmy, je to problém.
Celkem rychlé Zavedení systému
zavádění probíhá podle známého plánu a
Velmi pomalé a náročné
dodavatel na ni dohlíží. Celková spolehlivost
Systém testován
Zde nejsou odkryty
stovkami uživatelů
všechny šedé kouty.
Tabulka č. 1 Srovnání TASW a IASW
10
2.2 Analýza vhodného SW prostředí V této kapitole se zaměřím na jednotlivý software, který byl použit v souvislosti s mou bakalářskou prací. Důkladně zde popíši vlastnosti těchto programů a vysvětlím, proč jsem si je zvolil.
MySQL
SŘBD
MS SQL
Oracle
Perl
Skriptovací jazyk
PHP
Serverové
Xampp
řešení
Obr. č. 1 Schéma analýzy vhodného SW prostředí
2.2.1 Volba SŘBD
Systém řízení báze dat (SŘBD) je programový systém zajišťující bezporuchový průběh současného využívání databáze více uživateli, její udržování, aktualizaci a všestranné zabezpečení proti nesprávné a nedovolené manipulaci nebo chybám počítače a jeho programového vybavení. Systém řízení báze dat pracuje obvykle nad operačním systémem počítače.
11
Báze dat
Systém řízení báze dat Obrázek č. 2 Databáze a systém řízení báze dat tvoří dohromady databázový systém.
2.2.2 MySQL V této části jsem čerpal ze zdrojů [12], [23]. MySQL byla vytvořena v roce 1995 jako jednoúčelová databáze pro snadné ukládání a především čtení textových dat v internetových aplikacích. Za MySQL stojí švédská společnost MySQL AB, která se stará o vývoj, uživatelskou podporu a obchod. Její zakladatelé jsou dva Švédové a jeden Fin: David Axman, Allan Larsen a Michael „Monty“ Widenius. MySQL AB vlastní práva na zdrojový kód, obchodní značku a doménu mysql.com. Společnost má kolem 30 zaměstnanců roztroušených po celém světě – především z řad testerů a systémových integrátorů.
Hlavní myšlenkou této firmy bylo vytvoření takového databázového systému, který by byl dostupný všem. Jelikož cena MySQL při dodržení GNU General Public Licence (GPL) je nulová, tak nezbývá než konstatovat, že se jim to také povedlo. Počet instalací MySQL již přesáhl 2 milióny, čímž se stalo MySQL nejpopulárnějším databázovým systémem, přičemž se nedá říci, že je to databázový systém pro chudé, protože mezi spokojené zákazníky patří například Yahoo! Finance, MP3.com, Motorola, NASA, Silicon Graphics nebo Texas Instruments.
Databáze MySQL klade hlavní důraz na maximální rychlost, čímž si získala oblibu především u méně obsáhlých internetových projektů, kde je co nejkratší doba odezvy nutností. Na druhou stranu je třeba říci, že za rychlost se platí absencí 12
uložených procedur (stored procedures) nebo spouští (triggerů). Vzhledem k faktu, že poskytovatelé webhostingu mají tento databázový systém za standard, není snad pro programátora PHP lepší volby, a proto jsem ho zvolil i já ke své práci.
2.2.3 MS SQL Tento produkt je vyvíjen firmou Microsoft. Na rozdíl od MySQL je zpoplatněn a vydáván v několika verzích, podle množství funkcí a druhu licence. Velkou nevýhodou MS SQL je, že pracuje pouze pod platformou Windows. MS SQL podporuje standardy jazyka SQL a zavádí jeho další rozšíření: Transact-SQL, zkratkou T-SQL (u konkurenčního Oracle se jedná o PL/SQL) [35].
2.2.4 Oracle Databázové produkty Oracle patří mezi naprostou světovou špičku a pro svou výkonnost, spolehlivost a univerzální použitelnost posilují své postavení i v českých firmách, podnicích či úřadech. Jednou z výhod produktů ORACLE je to, že fungují pod operačními systémy jak Windows, tak i Linux. Tyto produkty se používají hlavně pro práci s velkým množstvím dat. Jelikož moje databáze nemá tak velké nároky, tak jsem Oracle zvolit nemusel.
MySQL
MS SQL
Oracle
Licence
freeware
trial / placená
trial / placená
Velikost databáze
malá – střední
střední – velká
velká
Rychlost odezvy
rychlá
pomalejší
pomalejší
serveru
Tabulka č. 2 Zhodnocení SŘBD
2.3 Volba skriptovacího jazyka 2.3.1 Perl Jednoduchý a praktický interpretační programovací jazyk používaný v praxi dle zdroje [28] zejména na WWW serverech. Vyniká i v oblasti zpracovávání souborů - ostatně právě kvůli tomu byl Perl navržen.
13
2.3.2 Něco z historie Perlu Název Perl vznikl dle zdroje [28] z akronymu Practical Extraction and Report Language. Jeho autorem je Kanaďan Larry Wall. Napsal jej pro svou potřebu, protože mu chybělo něco jednoduššího než C++, co zároveň zvládne i větší požadavky. V roce 1987 uvolnil Perl verze 1.0 pro veřejnost a sám se divil zájmu, který tím vyvolal. Proto se začal ještě dále vyvíjet. Z nástroje pro zpracování textu se povýšil na programovací jazyk s mnoha doplňky. Dnes se o vývoj Perlu stará skupina lidí v čele s Larrym Wallem. V posledních verzích se zvýšila hlavně rychlost a efektivita.
2.4 PHP 2.4.1 Vznik jazyka PHP
Zrození jazyka PHP začalo dle zdroje [21] v roce 1995, kdy Rasmus Lerdorf začal pracovat na vývoji nástroje s názvem PHP/FI. V žádném případě v tu dobu ještě netušil, že tento jeho krok vyústí ve vznik jazyka PHP, jejž známe dnes a jenž je používán milióny lidí. První verze tohoto programu byla pojmenována Homepage Tools/Form Interpreter a byl převážně psán v jazyce Perl. Tomuto programu však chybělo zatím spoustu základních funkcí jako např. cyklus „for“. V roce 1997 byl tento program přepracován a uvolněn v nové verzi. Toho si všimli studenti Andi Gutmans a Zeev Suraski, kteří pátrali po jazyce, který by jim usnadnil vývoj řešení elektronického obchodování. Při bližším seznámením se s PHP/FI studenti zjistili, že jim jazyk v této formě tak úplně nevyhovuje a rozhodli se ho společně s Rasmusem zcela přepracovat, a tak vznikl skriptovací jazyk PHP 3. Po uvolnění této verze v červnu 1998 se odhadovalo, že PHP je nainstalován na 50 000 domén. To bylo označováno jako skutečný průlom – nakonec se však ukázalo, že první verze byla nainstalovaná na více než jednom miliónu domén. Na konci roku 1998 se Zeev a Andy rozhodli, že mohou celý skriptovací jazyk napsat ještě lépe a tak se pustili do dalších úprav, které vyvrcholily ve verzi PHP 4. Tato verze přišla se zcela novým přístupem – „nejprve překlad, pak zpracování“. Skriptovací stroj nepřekládá skript do strojového kódu, ale do bajtového, jenž je poté zpracován pomocí Zend Engine (ZEev a aNDy). Díky této úpravě se výkon jazyka rapidně navýšil bez narušení 14
zpětné kompatibility s jazykem PHP 3. Tím se tedy dostáváme do současnosti, kdy aktuální verze jazyka PHP je PHP 5, která obsahuje vylepšený Zend Engine a je rozšířena o spoustu nových funkcí jako je nové rozhraní pro práci s SOAP (Simple Object Access Protokol) a MYSQLi.
2.4.2 Porovnání PHP a Perlu Hlavní výhoda PHP je v jednoduchosti, protože díky jednoduchosti a rychlosti formulování a fungování všech funkcí je právě PHP předurčen ke skvělé spolupráci s MySQL.
2.5 Volba serverového řešení 2.5.1 XAMPP Tento software je v podstatě takový instalační balíček „all-in-one“, který v mžiku nainstaluje do počítače Apache server a uživatel se tím vyhne složitým nastavováním a zdlouhavým instalacím. Ze zdroje [34] jsem zjistil, že velká výhoda toho balíčku je, že je schopen fungovat pod operačním programem Windows, Linux, Mac i Solaris. Balík Xamppu obsahuje například tyto nástroje: • • • • • • • • •
PHP phpMyAdmin Apache, MySQL MiniPerl, Openssl XAMPP Control Panel Mercury Mail Transport System, FileZilla FTP Server SQLite, ADODB Zend Optimizer XAMPP Security a Ming
V mém případě budu potřebovat jenom některé z nich, ale přesto volím Xampp pro jeho snadnou instalaci.
15
2.6 Volba PHP editoru Spousta lidí určitě už někdy zkoušela napsat alespoň základní webové stránky nebo si pohrávali s různým programovacím jazykem. Spousta těchto programovacích jazyků má vyvinuto i své vlastní vývojové prostředí, které je přizpůsobeno právě pro ten či onen programovací jazyk. Pokud ale pracujeme s několika najednou, pak se určitě musíme poohlédnout po editoru, který nám tuto možnost poskytuje.
2.6.1 PSPad Tento editor je oblíbený u programátorů v nejrůznějších programovacích jazycích. Program neobsahuje zbytečné funkce a zaměřuje se jen na přehlednost, rychlost a jednoduchost. Podporuje mnoho různých prostředí (PHP, HTML, XML, Java, JavaScript, Perl, C, C++, ASP, SQL, Python, aj.). Ocení ho všichni, kteří pracují s obyčejným textem, protože obsahuje velké možnosti formátování textu. PSPad může využít i ten, kdo chce editor pro vytváření webových stránek.
Obr. č. 3 Prostředí v programu PSPad
16
2.6.2 Notepad++ Dalším editorem, který je hojně využíván a oblíben, je Notepad++. Jak již je ostatně naznačeno v názvu tohoto editoru, je přizpůsoben také pro práci s C++, ale samozřejmě i s dalšími programovacími jazyky.
Obr. č. 4 Prostředí v programu Notepad++
Jednoduché prostředí je vybaveno například automatickým rozpoznáváním programovacího jazyka a zvýrazněním jednotlivých příkazů. Při psaní dlouhých projektů nabízí program i sbalení či rozbalení kódu, což napomáhá v orientaci a přehlednosti.
17
3. Faktura a její náležitosti Protože se má ukázková aplikace zabývá tvorbou faktur v různých formátech, tak v této kapitole uvádím obecný popis faktury. Faktura je dle zdroje [27] doklad, který uvádí, jakou částku má odběratel zaplatit dodavateli za zboží, práci nebo službu, do jaké doby a jakým způsobem. Nemá předepsanou podobu, každý uživatel si může vyrobit fakturu podle svých vlastních potřeb. Obvykle se ale na faktuře objevují hlavně tyto položky: číslo faktury, dodavatel, číslo účtu dodavatele, odběratel, konstantní symbol, příjemce, datum vystavení dokladu, datum splatnosti, datum uskutečnění zdanitelného plnění, forma úhrady, vlastní obsah faktury, podpisový záznam, rozpis DPH dle sazeb.
Číslo faktury Udává pořadí vydané faktury v účetním období, např.: 2008222, kde první čtyři čísla označují rok vystavení a další čísla označují pořadové číslo faktury. V čísle faktury se nesmí používat jakékoliv jiné znaky nežli čísla! Číslo faktury se na příkazu k úhradě stává variabilním symbolem a ten by banka např. s lomítkem či jiným nepatřičným znakem nezúčtovala.
Dodavatel Název firmy dle registrace v Obchodním rejstříku nebo u Živnostenského úřadu. Pokud by se firma nebo OSVČ (osoba samostatně výdělečně činná) nevyskytovala v registru ani jedné z uvedených organizací, pak není oprávněná vydávat faktury. Pokud je firma plátce DPH, musí být uvedeno DIČ (Daňové identifikační číslo).
Číslo účtu dodavatele Číslo určuje banka, u které má firma založený účet, kód banky je číselné označení banky. Na tento účet posléze dodavatel přijímá platbu za předmět faktury.
Odběratel Název firmy dle registrace v Obchodním rejstříku nebo u Živnostenského úřadu. Pokud je firma plátce DPH, musí být uvedeno DIČ.
18
Konstantní symbol Nejvýše čtyřmístné číslo, které vyjadřuje účel platby. Mezi nejpoužívanější patří: 0008 – platba za výrobky nebo zboží, 0308 – platba za služby, 0408 – platba za dopravu, 0558 – finanční platba, to je např. pojištění auta, zdravotním pojišťovnám, penále apod. Také každá daň má své číslo
Příjemce Nepoužívá se, (nevyplňuje), pokud je adresa odběratele stejná jako místo určení. Pokud např. firma sídlí v Praze a dodávka je určena na stavbu v Brně, musí být jako příjemce uvedena adresa v Brně.
Datum vystavení dokladu Doklad může být vystaven v den uskutečnění dodávky. Pokud se jedná o fakturu, kterou vystavuje plátce DPH, může být dle zákona o DPH doklad vystaven do 15 dnů od uskutečnění zdanitelného plnění, tj. ode dne, kdy bylo zboží dodáno, práce provedena.
Datum splatnosti Tento termín není určen žádným předpisem ani zákonem, jako tomu bylo dříve, ale je určen dohodou v kupní smlouvě. Nejrozšířenější termín splatnosti je 14 dnů, ale může to být i 30 dnů nebo 40 dnů dle dohody. Pokud není dohodnutý termín splatnosti dodržen, může dodavatel požadovat penále, ale jeho výše není libovolná. Určuje ji kupní smlouva, není-li na penále v kupní smlouvě myšleno, řídí se jeho výše obchodním zákoníkem. Penále, které nemá oporu v kupní smlouvě nebo obchodním zákoníku, nemá právní platnost!
Datum uskutečnění zdanitelného plnění Jedná se o termín vyplývající ze zákona o DPH č. 235/2004 Sb.. Neplátci jej nevyplňují. Udává den uskutečnění dodávky nebo dokončení služeb.
Forma úhrady Fakturovaná částka může být hrazena v hotovosti nebo převodem na účet. Forma úhrady musí být na faktuře vyznačena. Jiné způsoby úhrady jsou málo používané. 19
Vlastní obsah faktury Přesné označení fakturovaného předmětu a jeho cena. Pokud to vyžaduje charakter fakturovaného předmětu, musí faktura obsahovat kromě přesného označení zboží také jeho množství a cena za jednotku. Jestliže doklad vystavuje plátce DPH, označí i sazbu DPH. Musí být zřetelné označena celková fakturovaná částka v Kč.
Podpisový záznam Podle zákona o účetnictví musí být faktura vlastnoručně podepsána osobou, kterou určuje vnitřní řád firmy. Razítko není povinnou náležitostí faktury. Když už je ale doklad razítkem opatřen, musí být podpis umístěn mimo razítko!
Rozpis DPH dle sazeb Pokud doklad vystavuje plátce DPH, musí u každé fakturované položky určit cenu bez daně, částku daně a daňovou sazbu. Na závěr uvede částku celkem.
20
4. Formáty používané pro výměnu dat V této kapitole představím několik formátů, které se vyskytují v aplikaci, kterou jsem naprogramoval. V tomto případě se jedna o formáty HTML, PDF a RTF.
4.1 HTML Za touto zkratkou se skrývá pojem Hyper Text Markup Langure [24], což je jazyk běžně využívaný k vytváření webových stánek. HTML je jednoduchý značkovací jazyk, kterým se tvoří webové stránky. Tyto stránky jsou jen obyčejné textové soubory, které většinou obsahují nějaký text a pár html značek, které určují význam a vzhled jednotlivých částí stránky.
4.2 PDF Zkratka je z anglického názvu Portable Document Format (Přenosný formát dokumentů) je dle zdroje [28] souborový formát vyvinutý firmou Adobe pro ukládání dokumentů nezávisle na softwaru i hardwaru, na kterém byly pořízeny. Soubor typu PDF může obsahovat text i obrázky, přičemž tento formát zajišťuje, že se libovolný dokument na všech zařízeních zobrazí stejně. Vytvářet PDF dokumenty lze jak v Adobe Acrobat, tak v dalších programech. Prohlížení je snazší, existují volně dostupné prohlížeče pro mnoho platforem, nejznámějším je oficiální prohlížeč mateřské firmy Adobe Reader. PDF soubory mají příponu pdf. PDF je otevřeným standardem a je snadno přenositelný, i proto je velice rozšířený a hojně využívaný. 1. července 2008 byl tento formát publikován jako standard ISO 32000-1:2008.
4.3 RTF Je zkratka dle zdroje [25] pro Rich Text Fomat. Jedná se o formát standardizován firmou Microsoft pro vytváření formátovaných textových souborů. Na rozdíl od základních textových souborů, může soubor RTF obsahovat informace, jako je styl textu, velikost a barva. Výhodou formátu RTF je, že to je univerzální formát, což znamená, že ho dokáže přečíst téměř každý textový procesor. Je to Microsoftem vyvinutý, na platformě nezávislý formát souboru pro uložení textu, který obsahuje co největší množinu formátovacích příkazů. Vznikl v roce 1987. Pomocí tohoto formátu je obecně možné vyměňovat dokumenty mezi 21
nejrůznějšími programy pro zpracování textu se zachováním vzhledu a formátu. Na rozdíl od většiny vlastních formátů souborů textových editorů je RTF čitelný i v prosté textové podobě, tedy jeho obsah vypadá jako zvláštní text ASCII, nikoliv jako změť nesmyslných znaků.
22
5. Databáze V této části jsem čerpal ze zdrojů [22] a [31], podle nichž lze definovat databázi jako souhrn navzájem vázaných dat, uložených bez zbytečné redundance tak, aby mohla sloužit více databázovým aplikacím. Data jsou uložena v paměti tak, že jsou nezávislá na programech, které je používají. Přidávání nových dat i modifikace a výběr již existujících dat v rámci databáze je centrálně řízeno SW, který se nazývá systém řízení báze dat. Data je možno využívat a rozšiřovat v různém rozsahu a z různých hledisek uživatelem nebo současně více uživateli a s využitím různých přístupových metod.
5.1 Modely databázových systémů Stávající SŘBD jsou založeny na třech základních modelech dat, podle nichž také nesou název: 1) Hierarchický (princip stromu) 2) Síťový (princip sítě) 3) Relační (princip vztahů mezi entitami)
V mojí práci používám relační model, který byl poprvé publikován pracovníkem firmy IBM E. F. Coddem, který upustil od myšlenky rodičovských vztahů mezi různými položkami v databázi a pohlédl na strukturu souboru jako na relaci. Ad 1)
Obr. č. 5 Hierarchický model [22] 23
Ad 2)
Obr. č. 6 Síťový model [22]
Ad3)
Obr. č. 7 Příklad jednoduchého ERA diagramu [32]
Obr. č. 8 Struktura dat v relační databázi [36]
24
5.2 Základní normy tvorby databází Při vytváření moderní databáze musíme dbát na dodržení základních norem. Vlastní pojem normalizace zahrnuje tři základní myšlenky [31]. •
omezit redundanci - každý údaj má být v databázi jen jednou
•
omezit složitost, tj. dekomponovat složité relace na dvojrozměrné tabulky s atomickými hodnotami polí a složité vztahy více - více na jednoduché vztahy 1 : N nebo 1 : 1
•
zabránit tzv. aktualizačním anomáliím (např. abychom při zrušení záznamu o programu nepřišli o údaje o filmu)
5 NF 4 NF 3 NF 2 NF 1 NF
Obr. č. 9 Grafické schéma norem databáze
1. NF Tabulka splňuje tuto podmínku, pokud hodnoty zadané do všech sloupců jsou atomické, tzn. dál nedělitelné. Jeden sloupec tak nesmí obsahovat více druhů dat. Hodnota sloupce nesmí být relace. 2. NF Tuto podmínku splňuje tabulka tehdy, pokud splňuje 1. NF a každý sloupec (kromě primárního klíče) je zcela závislý na primárním klíči. 2. NF se týká pouze tabulek, které obsahují více primárních klíčů. 3. NF Tato podmínka platí, pokud platí 2. NF a současně neexistují závislosti neklíčových sloupců tabulky. 25
4. NF Tabulka je ve 4. NF tehdy, pokud je ve 3. NF a popisuje jediný fakt nebo souvislost. 5. NF Tabulka je v 5. NF tehdy, pokud je ve 4. NF a není možno do ní přidat sloupec nebo skupinu sloupců, aniž by se rozpadla tato tabulka na několik dílčích tabulek.
26
6. Praktická část
27
6.1 Popis aplikace V praktické části jsem se zaměřil na vytvoření konkrétního programu, který by obsahoval reálnou náplň kurzu na jeden semestr. Pro tyto účely jsem zvolil následující aplikaci „faktura“. Tato aplikace, jak již její název napovídá, je zaměřená na zpracování fakturačních údajů v malé odchodní firmě do 5 zaměstnanců. Využívá technologie PHP a SQL v praxi. Kdyby tento formulář měl být schopný reálného provozu, musel by být ještě vybaven ukládáním jednotlivých položek do databáze z důvodu zpětné editace, ale pro tento případ to není nutné.
Databáze htmltest.php
index.php
faktura.php
generate.php
logout.php
pdftest.php
rtftest.php
Obr. č. 10 Schéma aplikace
6.2 Login Na začátku jsem vytvořil databázi, do které jsem vložil tabulku, která obsahuje údaje, které se kontrolují při nalogování do systému. Tabulka „uživatel“ obsahuje dva údaje – jméno a heslo. Tuto tabulku jsem následně propojil s aplikací, kterou jsem vytvořil pomocí jazyka PHP.
Úryvek kódu ze souboru index.php $link=mysql_connect('localhost','root',''); mysql_select_db('bakule'); // vybere databázi
28
Po úspěšném propojení jsem pokračoval dál, a to vytvořením loginu. Vytvořil jsem klasické přihlašovací prostředí, které požaduje po uživateli zadání přihlašovacího jména a hesla.
Úryvek kódu ze souboru index.php
Tímto krokem jsem ošetřil bezpečný vstup do budoucí aplikace. Pouze ti uživatelé, kteří jsou zapsáni v databázi, se nyní mohou nalogovat. Login je také vybaven podmínkou, která rozpozná chyby při pokusu o přihlášení, například pokud uživatel vyplní pouze jméno a na heslo už zapomene anebo naopak, pokud vyplní heslo a jméno zapomene, program ho na to upozorní chybovou hláškou.
29
Úryvek kódu ze souboru index.php if ($_POST['send'] == "OK") { $jmeno = $_POST['jmeno']; if ($_POST['jmeno']== "") $err_jmeno = "Nezadal(a) jste jméno"."
"; $heslo = $_POST['heslo']; if ($_POST['heslo']== "") $err_heslo = "Nezadal(a) jste heslo"; if ($_POST['jmeno']<> "" && $_POST['heslo']<> ""){ $dotaz="select * from user where Name='".$_POST['jmeno']."' and Pass='".$_POST['heslo']."'"; $result = mysql_query($dotaz); $pocet_radku=mysql_num_rows($result); if ($pocet_radku > 0){ $_SESSION['login']= true; header("Location: faktura.php"); }}}
Aplikace je také vybavena zabezpečením proti „přeskočení“ loginu pouhým vypsáním přímé adresy do internetového prohlížeče. Bez toho, aby správně proběhl login, systém nepustí žádného uživatele dál. Tuto úlohu plní mechanismus session, který je schopný zapamatovat si, zda proběhl úspěšný login či nikoliv. Pokud login neproběhl řádně, tzn. nebyla splněna podmínka, je uživatel přesměrován zpět na hlavní stánku. Mechanismus session má několik funkcí, ale já jsem použil pouze ty základní.
funkce
význam
Session_start()
Inicializuje (nastartuje) relaci.
Session_destroy()
Odstraní všechna data relace (např. při odhlašování uživatele). Tabulka č. 3 Mechanismus session 30
Úryvek kódu ze souboru faktura.php true) // když se uživatel nezaloguje, je přesměrován na index.php header("Location: index.php"); ?>
Úryvek kódu ze souboru logout.php
6.3 Formulář faktury Následně po nalogování do systému bylo potřeba vytvořit formulář, do kterého by mohl uživatel vyplnit všechny fakturační údaje. Zde mi opět posloužil jazyk PHP s kombinací HTML, jejichž prostřednictvím jsem vytvořil požadovaný formulář.
31
Úryvek kódu ze souboru faktura.php
32
Abych dodržel co nejvěrnější podobu faktury, vyhledal jsem si vzor [30] faktury (příloha č. 1). Podle tohoto vzoru jsem vytvořil položky ve stávajícím formuláři.
Obr. č. 11 Výsledný formulář faktury
Jak je vidět na obrázku č. 9, pod formulářem se nachází zaškrtávací volba pro uživatele, který musí zvolit výsledný výstupní formát pro fakturu. Na výběr jsou formáty HTML, PDF, RTF. Ke každému z těchto formátů je vytvořen soubor, ve kterém se data zpracují. Přiřazování jednotlivých souborů je vyřešeno touto podmínkou.
33
Úryvek kódu ze souboru generate.php
else if ($_POST['format']=="html"){
include ("htmltest.php");// htmltest.php }
přiřadí
k
volbě
html
soubor
else if ($_POST['format']=="rtf") {
include ("rtftest.php");// přiřadí k volbě rtf soubor rtftest.php } ?>
Poté už stačí volbu potvrdit kliknutím na tlačítko OK a výsledná faktura bude vygenerována. V případě volby formátu HTML se faktura po zvolení OK jednoduše vypíše příkazem „echo“ na obrazovku uživatele. Pakliže se uživatel rozhodne pro výstup ve formátu PDF, bude mu vygenerován soubor s fakturou, který si pak může uložit a archivovat. Tento soubor ale nelze editovat. Generování PDF souboru probíhá přes speciální knihovnu fpdf.php, která je volně ke stažení na adrese http://www.fpdf.cz/download/. Tato knihovna se následně musí propojit s aplikací příkazem „require“.
Úryvek kódu ze souboru pdftest.php
Při zvolení formátu RTF se také vygeneruje soubor, který se otevře v editoru Microsoft Office Word a lze ho ještě dodatečně editovat a posléze uložit. Při generování RTF souboru pomocí PHP byla taktéž použita speciální knihovna PHPRtfLite.php,
která
je
volně
ke
stažení
na
adrese
http://www.phprtf.com/index.php/download/. Tato knihovna se poté musí taktéž propojit s aplikaci pomocí již známého příkazu „require“.
34
Úryvek kódu ze souboru rtftest.php
6.4 Mapa webu
Login
Formulář
Výstup
HTML
PDF
35
RTF
6.5 UseCase aplikace
Nalogování
Vyplnění formuláře
Uživatel
Zvolení výstupu
Kontrola v DB
Počítač „Tisk“
36
7. Závěr Cílem této bakalářské práce bylo vytvoření didaktické pomůcky pro výuku technologií PHP a SQL. Pro tento účel jsem vytvořil webovou aplikaci, která obsahuje a propojuje obě již zmíněné technologie. Tato aplikace umožňuje vytvoření faktury, která může být vyexportována ve třech libovolných formátech HTML, PDF, RTF dle požadavku uživatele.
37
8. Zdroje [1]
Boronczyk, Timothy, PHP 6, MySQL, Apache: vytváříme webové aplikace.; překlad Bogdan Kiszka]. -- Vyd. 1. -- Brno: Computer Press, 2009. -- 816 s.
[2]
Castagnett ,Jesus, Programujeme PHP profesionálně, 2. opr. a aktualiz. vyd., Praha: Computer Press, 2002, 656 s.
[3]
Čech, Pavel, Podniková informatika, Vladimír Bureš. Vyd. 1., Hradec Králové: Gaudeamus, 2009. -- 232 s.
[4]
DeLisle, PhpMyAdmin – efektivní správa MySQL. Praha: Zoner Press, 2006. 253 s.
[5]
Gála, Libor, Pour, Jan, Šedivá, Zuzana, Podniková informatika. 2., přeprac. a aktualiz. vyd.. -- Praha: Grada, 2009. -- 496 s
[6]
Gála, Libor, Pour, Jan, Toman, Prokop, Podniková informatika: počítačové aplikace v podnikové a mezipodnikové praxi, technologie informačních systémů, řízení a rozvoj podnikové informatiky
. -- 1. vyd.. --
Praha: Grada, 2006. -- 482 s [7]
Gilmore, Jason, Velká kniha PHP a MySQL 5 - kompendium znalostí pro začátečníky i profesionály. Praha: Zoner Press, 2005. 535 s.
[8]
Gutmans, Andi, Mistrovství v PHP 5 / Andi Gutmans, Stig Saether Bakken, Derick Rethans ; [z angličtiny přel. Bogdan Kiszka] --
Brno: Computer
Press, 2007, 656 s. [9]
Kofler, Michael, PHP 5 a MySQL 5 : průvodce webového programátora, Bernd Öggl ; [překlad David Čepička]. -- Vyd. 1. -- Brno: Computer Press, 2007. -- 607 s.
[10]
Kosek, Jiří. PHP, Praha: Grada, 1999. 492 s.
[11]
Lavin, Peter, PHP objektově orientované: koncepty, techniky a kód / Peter Lavin; [ přeložil Michal Pospíšek] -- Praha Grada, 2009, 211 s.
[12]
Mach, Jakub, PHP: pro úplné začátečníky. 2. Brno: Computer Press, 2003. 167 s.
[13]
Maslakowski, Mark, Naučte se MySQL za 21, Vyd. 1. Praha: Computer Press, 2001. --, 478 s.
[14]
Paggard, Paggard.com [online]. 2004 [cit. 2010-02-25]. Web programming technologies . Dostupné z WWW: http://paggard.com/projects/rtf.generator/>.
38
[15]
Pankrác, Miloslav, PHP a MySQL: bez předchozích znalostí: [průvodce pro samouky]. -- Vyd. 1. -- Brno: Computer Press, 2007. -- 221 s
[16]
Pokorný, Jaroslav, 1948-Databázové systémy / Jaroslav Pokorný, Ivan Halaška. -- [Praha] : Česká informatická společnost, 2002. -- 146 s.
[17]
Polzer, Jan, 1980-Drupal : podrobný průvodce tvorbou a správou webů. 2., aktualiz. vyd.. -- Brno: Computer Press, 2008. -- 276 s.
[18]
Schwarz, Baron, MySQL profesionálně: optimalizace pro vysoký výkon; [překlad Jan Pokorný]. -- Brno : Zoner Press, 2009. -- 712 s.
[19]
Ševčík,
Petr, 1986-
Základní
nástroje
vytváření
webových
aplikací [elektronický zdroj] / Petr Ševčík -- 2009: digital, PDF soubor [20]
Welling, Luke a Thomson, Laura, PHP a MySQL: rozvoj webových aplikací; [překlad Martin Minář, Libor Jelínek] -- Praha SoftPress, 2002,718 s.
[21]
Gutmans, Andi ; Rethans, Derick. Mistrovství v PHP 5. 1. Brno: CP Books, a.s, 2005. 645 s.
[22]
Bíla, Jiří, et al. Informační technologie: Databázové a znalostní systémy. 3. Praha: ČVUT, 2009. 135 s.
[23]
Málem, Vilém, Interval.cz [online]. 2007 [cit. 2010-05-01]. Interval.cz. Dostupné z WWW:
.
[24]
ŽĎÁREK, Roman. Tvorba WWW stránek [online]. 2004, 2008 [cit. 2010-0509]. Úvod do jazyka HTML. Dostupné z WWW:
.
[25]
ECTACO Inc. E-Knihy [online]. 2001, 2008 [cit. 2010-05-09]. Ectaco. Dostupné z WWW: .
[26]
FARANA, Radim. Microsoft Access 2.0 [online]. 1995 [cit. 2010-05-23]. Databázové
systémy.
Dostupné
z
WWW:
. [27]
HYL s.r.o. Hyl.cz [online]. 2010 [cit. 2010-05-23]. Faktura. Dostupné z WWW: .
[28]
STREITOVÁ, Kateřina. Komunikační a informační portál pro řemeslníky a jejich zákazníky [online]. Praha: Fakulta elektrotechnická, 2009. 63 s. Bakalářská práce. České vysoké učení technické. Dostupné z WWW: .
39
[29]
VACLAVÍK, Jiří. Linuxsoft.cz [online]. 2005 [cit. 2010-06-18]. Perl (1) Dávka
teorie
na
úvod.
Dostupné
z
WWW:
. [30]
Euroekonom.cz : ekonomický portal [online]. 2010 [cit. 2010-06-23]. Faktura ke stažení. Dostupné z WWW: .
[31]
KUČEROVÁ,
Helena.
Databázové
Info.sks.cz
systémy.
[online].
2004
[cit.
Dostupné
2010-06-24].
z
WWW:
. [32]
KLIMÁNEK, David. Moodle.sks.cz [online]. 2010 [cit. 2010-06-25]. DAS1. Dostupné z WWW: .
[33]
MATĚNA, Roman. Solisshop.cz [online]. 2008 [cit. 2010-06-25]. Stavět eshop na míru nebo koupit hotový systém?. Dostupné z WWW: .
[34]
SEIDLER, Oswald. Apachefriends.org [online]. 2002 [cit. 2010-06-26]. Apache
friends.
Dostupné
z
WWW:
. [35]
JAKEL, Milan. Interval.cz [online]. 2002 [cit. 2010-06-26]. Sblížení s Microsoft
SQL
Server.
Dostupné
z
WWW:
. [36]
KULHAN, Jakub. Programujte.com [online]. 2008 [cit. 2010-06-26]. Normalizace
relačních
databází.
Dostupné
z
.
40
WWW:
9. Přílohy Příloha č. 1-Vzor faktury
41
9.1 Seznam použitých termínů Apache
– webový server
HTML
– značkovací jazyk - HyperText Markup Language
MySQL
– systém řízení báze dat
Oracle
– systém řízení báze dat
Perl
– skriptovací jazyk - Practical Extraction and Report Language
PHP
– skriptovací jazyk
SQL
– strukturovaná databázový jazyk - Structured Query Langure
SŘBD
– systém řízení báze dat
Xampp
– instalační balíček pro server
42
9.2 Seznam použitých obrázků a tabulek Obr. č. 1 Schéma analýzy vhodného SW prostředí
11
Obr. č. 2 Databázový systém
12
Obr. č. 3 Prostředí v programu PSPad
16
Obr. č. 4 Prostředí v programu Notepad++
17
Obr. č. 5 Hierarchický model
23
Obr. č. 6 Síťový model
24
Obr. č. 7 Příklad jednoduchého ERA diagramu
24
Obr. č. 8 Struktura dat v relační databázi
24
Obr. č. 9 Grafické schéma norem databáze
25
Obr. č. 10 Schéma aplikace
28
Obr. č. 11 Výsledný formulář faktury
33
Tabulka č. 1 Srovnání TASW a IASW
10
Tabulka č. 2 Zhodnocení SŘBD
13
Tabulka č. 3 Mechanismus session
30
43
Závěrem této práce bych rád poděkoval Ing. Davidovi Klimánkovi Ph.D. za jeho odborné vedení, podporu a přístup, bez nichž by tato práce nevznikla. Děkuji
44