Hlavní navigace

PHP pro experty: databázové rozhraní

Martin Koníček 26. 8. 2004

Tvoříte zdlouhavě administrativní rozhraní vaší webové aplikace? Nevíte, jak ji napojit na informační systém podniku? Přečtěte si, jaké nejefektivnější způsoby existují při správě databáze MySQL pomocí PHP.

Úvod

Předmluva

Při častém programování v PHP jsem přišel na to, že nejzdlouhavější, nejotravnější a takřka tovární činnost je tvorba administračního rozhraní webové aplikace. Proto jsem chvilku zabádal na Internetu a našel jsem různá řešení usnadňující tvorbu administrace projektu, spíše by ovšem bylo přesnější pro tvorbu rozhraní (front-end) databáze MySQL.

Jak začít

Před tvorbou celé aplikace je potřeba vždy nejdříve navrhnout strukturu databáze. Dřív nebo později přijdete na to, že nelze programovat tím způsobem, že vytvoříte nějakou stránku, pak jednu tabulku, pak administraci tabulky atd. Pokud takovýto způsob zvolíte, doslova si říkáte o vytvoření nepřehledné a nabobtnalé aplikace, kterou navíc budete vytvářet zbytečně dlouho. Proto si zapamatujte, že než napíšete jediný řádek kódu, nejdříve navrhněte strukturu databáze. Stačí jen informativně a na papíře, ale něco byste určitě měli mít.

Zpracování databáze počítačem

Počítám s tím, že jste se drželi mé předešlé rady, a nyní máte navrhnout databázi na papíře. Teď se ji celou pokusíme přenést do počítače. Asi nejlepší metodou je použít volně šiřitelný software DBDesigner od společnosti FabForce. Poté, co si nainstalujete tento software (dostupné je verze jak pro systémy win32, tak Linux), jednoduše překreslete databázi. Máte k tomu k dispozici jen ty nejprimitivnější nástroje, ale v případě databáze MySQL vám určitě postačí.


Po překreslení databáze se připojte k serveru MySQL a tam databázi vyexportujte. Vidíte, stále čistě a elegantně navrhujeme databázi včetně dokumentace, a přesto neztrácíme na rychlosti vývoje.

Rozhraní k databázi

Předmluva

Pokud jste se dali k profesionálnímu vývoji webových aplikací, jistě jste brzo přišli na to, že k webovým aplikacím nepřistupují jenom jejich návštěvníci, ale také správci, redaktoři, případně jiní pracovníci firem, které stránky udržují. Dnes je již téměř jasné, že webové stránky mají cenu pouze v tom případě, že jsou aktuální, neaktuální stránka jako by na Internetu nebyla. Právě proto, aby web co nejvíce „žil“, je potřeba vymyslet co nejjednodušší a nejrozsáhlejší administrativní rozhraní. O tom, jak jej vytvořit v rekordně nízkém čase, si povíme dále.

Formitable

Tímto produktem jsem se rozhodl začít zejména proto, že nabízí nejméně možností ze všech tří recenzovaných produktů, ale má nad nimi jednu hlavní výhodu – nabízí velkou kontrolu nad tím, jak výsledný formulář bude vypadat, a o to jde mnoha programátorům především.

Formitable je jednoduchá knihovna, jež vytvoří formulář z databáze za vás. Stačí jí pouze zadat jméno tabulky, a máte formulář. Pokud se vám například nelíbí některý z typů pole (místo zaškrtávacích políček preferujete například výběrové pole), můžete vše nakonec doopravit jednoduše a přehledně ručně. Formitable se totiž jako mnozí jeho konkurenti nesnaží programátorovi vložit do rukou mocný framework, ale pouze ulehčující nástroj, u kterého není problém mít jej zcela pod kontrolou.

Asi nejzajímavější možností knihovny Formitable je podpora relací a číselníku. Uvedu jednoduchý příklad, máte tabulku „ovoce“ a tabulku zákazníci. Nyní chcete ke každému zákaznikovy přiřadit jeden druh ovoce, jak to ale vyřešit ve formuláři?

$newForm->normalizedField
("zakaznik", "ovoce", "id_ovoce", "jmeno_ovoce", "pkey ASC"); 

Jak vidíte výše, není to žádný problém. Jako první dvě proměnné předáte formitable jména tabulek, která chcete spojit. Dále zadáte identifikační číslo a název položky a máte číselník. Ostatně pokud takovéto fígle používáte často, jistě si formitable brzo zamilujete nejen díky jeho jednoduchosti.

Výhody

  • Jednoduchost
  • Relace
  • Malá velikost
  • Kontrola nad kódem

Nevýhody

  • Nevalidní kód
  • Nepodporuje výpis informací z databáze
  • Nutnost psát kód pro každý formulář

Závěr

Formitable je ideálním nástrojem pro vývojáře, kteří chtějí s formuláři jen trošku pomoci, ale jinak chtějí mít vše po svém. S trochou snahy lze navíc knihovnu upravit tak, aby generovala XHTML validní kód.

O projektu

on-line demo
domovská stránka
Velikost: 8kB

Dadabik

Dadabik je doslova framework pro vytváření rozhraní k databázi MySQL. Umožňuje velmi rychle a jednoduše vytvořit kompletní administrační část webu, včetně výpisů z databáze, stránkování, možností změny údajů, nahrávání souborů atd. Ačkoliv mezi výhody patří mnoho možností včetně WYSIWIG editoru textu, nikdy bych tento produkt nenasadil profesionálně.

Teď jsem vás možná zaskočil, protože framework, ve kterém vytvoříte administraci za pět minut, bych profesionálně nepoužil. Ovšem mám k tomu své důvody. Přestože je dadabik opravdu dobrým pomocníkem při extrémně rychlém vývoji aplikací, v normální praxi může velice snadno selhat. Jeho největší nevýhodou totiž jsou nízké možnosti přizpůsobení. Například upravit vzhled administrace, popřípadě vyřešit pomocí relací číselník, je podle mého názoru takřka nemožné. Navíc nad celým vývojem i aplikací ztrácíte kontrolu. Z toho vlastně vyplývá, že pokud tvoříte aplikaci, kterou vyvinete jednou provždy, za pár dní, není lepšího výběru, ovšem v případě, že se rozhodnete pro další úpravy administrace, jistě se s tímto rozhraním neztotožníte.

Výhody

  • Vytvoření zakódované administrace za pět minut
  • Průvodce pro vytváření aplikace

Nevýhody

  • Malá kontrola nad kódem
  • Nepodporuje šablony, změna vzhledu jen přes CSS

O projektu

domovská stránka
Velikost: 170 kB

MS Access

MS Access patří k produktům od Microsoftu, které umožňují velmi rychlý vývoj aplikací s minimálními programátorskými znalostmi. Možná právě proto se na všech školách tento produkt učí, a proto byste se neměli divit, pokud jej zvládne ovládat i sekretářka nebo účetní :-D. Podle mých informací MS Access patří k produktům, ve kterých umí ekonomové lépe než matfyzáci, alespoň v něčem mohou mít výsadu :-).

Přestaňme s hloupým klábosením a dejme se do práce. MS Access vám nabízí možnost rychle vytvořit potřebné formuláře, generovat reporty, organizovat data atd. Stačí ho jen připojit k MySQL, a to možná není takový problém, jak si myslíte.

ODBC

Jedinou mně známou možností, jak spojit MS Access s MySQL, je přes rozhraní ODBC. Právě zde nastává onen problém, neboť přestože firma AB k MySQL zdarma dodává ODBC Connector, jedná se ve skutečnosti o mírně nedotažený produkt. Především před instalací ODBC Connectoru je potřeba zazáplatovat vaše Windows aktualizací MS Jet SP (minimálně ve verzi 5 :)), která je ke stažení na stránkách Microsoftu. Problém je, že verzi pro česká Windows se mi odtud stáhnout nepodařilo, a jsem relativně líný kontaktovat kvůli tomu Microsoft (pokud by tak někdo učinil, budu mu vděčen). Proto jsem našel postarší verzi stáhnutelnou ze stránek Živě. Po stažení této aktualizace ji jednoduše nainstalujte a pojďme dále.

Stažení ODBC Connectoru ze stránek MySQL probíhalo relativně snadno. K dispozici jsou nejen verze pro Windows, ale i pro Linux, nicméně ty nás prozatím nebudou zajímat. Po nainstalování MySQL Connectoru stačí jen pustit MS Access (pozn. autora: vím, že by vás to také napadlo :-) a napojit tabulky z MySQL.

další podrobnosti

Výhody MS Access

Protože to není téma tohoto článku, pokusím se to co nejvíce zkrátit. Přestože MS Access je vynikající produkt pro malé nasazení, kde umožňuje extrémně rychlý vývoj aplikací, může se ve větším projektu jevit spíše jako hřebík v botě.

  • Znatelná úspora času při tvorbě administrace
  • Mnohem rychlejší odezva
  • Tvorba reportů
  • Snadná tvorba maker
  • Jednoduchost ovládání
  • Možnost integrace se stávajícími aplikacemi v MS Access

Nevýhody

  • Funguje pouze pod Windows (případně MDBTools pod Linux)
  • Zabezpečení je nutno řešit na straně databáze
  • Nepodporuje UTF-8
  • Složitost instalace
  • Podivná podpora SQL dotazů

Co vás čeká příště

Jak nepatrně koukám na rozsáhlost mého textu, začínám si skrytě uvědomovat, že do tohoto dílu nemohu obsáhnout vše, co bych chtěl, proto například rychlou tvorbu SQL dotazů přesunu do dalšího dílu. Tím se dostávám k tomu, že další díl bude obsahovat věci, co se nikam nevešly, a rozhodně byste je měli vědět, než půjdeme dále. Ostatně tento seriál si ani neklade za cíl vzdělávat lidi v tomto jazyku, ale spíš je popostrčit „správným“ směrem, kterým by se měli ubírat.

P.S: Protože jsem si u minulého dílu všimnul v komentářích velkého ohlasu, rád bych upozornil na svůj LGPL projekt frameworku, který naleznete na adrese smartbee.source­forge.net, jež je primárně určen pro rychlý vývoj aplikací se standardní optimalizací pro vyhledávače a stále pro něj hledám pomocné síly :-D.

Našli jste v článku chybu?

30. 8. 2004 11:23

N/A (neregistrovaný)

:-) Máte dojem, že prosazuji OO "za každou cenu"? Nebo že tvrdím, že je na danou činnost OO vhodnější než Access?

Pokud ano, je to špatný dojem. Cituji ze svého původního příspěvku: "... by nejspíš bylo možné použít...". Mám dojem, že z toho je jasně vidět ten entuziasmus, to zapálení pro OO, které mám. ;-)

Ale Vás může těšit vědomí, že jste připsal do diskuse nějaké moudro a že jste dal "tomu fanatikovi" co proto.





29. 8. 2004 20:09

Michal Kára (neregistrovaný)

Ja jsem svoji DBLIB zacal psat na zaklade psani par webu, kdyz jsem zjistil, ze dobrou polovinu casu mi zabira programovani tech samych veci - nacist radek, pripadne seznam radku) z DB, zobrazit v tabulce oscapovane htmlspecialchars(), prijmout data z formular, zkontrolovat, oescapovat AddSlashes(), vlozit do DB. Ten kod byl prakticky porad to same.

Jak vidite z poctu ruznych frameworku, tak "one size fits all" rozhodne nehrozi :-)))

(A mimochodem, programovani s takovym frameworkem je pod…



Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Podnikatel.cz: Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte