Hlavní navigace

PHP: Databáze

Michal Samek 17. 6. 1999

Dnes se podíváme na podstatnou část knihovny vestavěných funkcí, které nám dovolují přistupovat z PHP k různým databázím. A nebyl bych to já, kdybych nezačal malým zamyšlením nad možnostmi, které nám spojení html a databází poskytuje.

SQL a web

Zřejmě nejdůležitější a nejčastější aplikací PHP je vytváření webových interface k SQL databázím; z druhé strany se SQL databáze stávají nepostradatelnou součástí mnoha před časem „normálních“ webů. Typickou databázovou aplikací je internetový obchod – zde je PHP ideální platformou (jeden takový mám na starosti a mohu potvrdit, že funkční jednoduchý obchod napíšete v PHP pomocí několika skriptů i za pár dnů). Databáze však nabízí bezpočet jiných smysluplných aplikací. Například zpravodajské servery (včetně Roota) mívají články uložené v databázi, což umožňuje jednoduchou implementaci vyhledávání a zejména zjednodušuje správu takového serveru (zkuste si představit denně aktualizovat server vytvořený pomocí statických html stránek).

Podobnou techniku lze využít i u rozsáhlých firemních informačních webů, kde sice aktualizace neprobíhají tak často, ale pokud váš site obsahuje mnoho podobných stránek, lišících se pouze obsahem, ušetří vám PHP mnoho práce. Umístíte texty, odkazy a obrázky do databáze a napíšete jeden (nebo několik málo) skript (ů), které vytvoří stránku z databáze s jednotným layoutem. Nakonec stvoříte pro autory obsahu nějaký publikační systém, umožňující doplňování a opravu databáze, opět nejlépe s webovým interface, a můžete svěřit správu obsahu webu i počítačovým neodborníkům.

Jiným zajímavým využitím databází je sledování a vyhodnocování „sessions“ – technika, umožňující rozlišit jednotlivé uživatele a přenášet informace o „stavu“ uživatele mezi různými stránkami. Můžete autorizovat jednotlivé uživatele, sledovat jejich pohyb po stránkách, umožnit nastavení individuálních preferencí webu (jazyk, oblasti zájmu nebo třeba barvy atd.) – takový systém může poskytnout cenné marketingové informace provozovateli stejně jako pohodlí a výkon návštěvníkům webu.

Poslední oblastí využití databází s html interfacem, o které bych se rád zmínil, jsou intranetové obchodní agendy. Dovedu si představit kompletní firemní informační systém napsaný v PHP. „Opravdovým“ programátorům v Delphi :) to může připadat mírně řečeno zvláštní, ale výhody takového řešení jsou zřejmé. Celý systém běží na JEDNOM počítači, správa klientů se omezí na fungující browser, nejste omezeni klientskou platformou (takže můžete zavést hromadně Linux :) ), browser už umí každý ovládat, systém je připraven pro vzdálenou práci (šéf si doma přepočítá pohledávky) atd.

SQL servery
PHP umí komunikovat s mnoha různými SQL servery – pro každý podporovaný typ existuje sada podobných funkcí, umožňujících minimálně připojení k serveru, odeslání SQL query, přístup k výsledné tabulce a případnému chybovému hlášení serveru. Pro ilustraci uvádím příklad, vypisující cosi z databáze PostgreSQL:

$c = pg_Connect('localhost','5432',,'databaze');
$q = "SELECT nazev, link FROM seznam WHERE kategorie='".$kat."';";
$r = pg_exec($c, $q);
for ($i=0; $i<pg_numrows($r); $i++) {
  echo '<A href="'.pg_result($r, $i, 'link').'">'.
       pg_result($r, $i, 'nazev').'</A>';
  echo '<BR>';
}

V současné době podporuje PHP přímo tyto SQL servery: Adabas D, Informix, Interbase, mSQL, MySQL, Sybase, Oracle, PostgreSQL, Solid, MSSQL a prostřednictvím ODBC teoreticky jakýkoliv jiný SQL server.

SQL zadarmo
Pokud jste tak jako já příznivci kvalitního Open Source software, budete se pravděpodobně rozhodovat mezi PostgreSQL a MySQL (ten sice Open Source není, ale pokud ho nehodláte distribuovat za úplatu, zůstává pro vás v kategorii free software. Koneckonců ani PostgreSQL není pod GNU licencí, autoři nám neslibují, že všechny budoucí verze budou taky free.) Srovnání těchto dvou produktů je minimálně téma na samostatný článek a příčinou mnoha sporů v různých konferencích. Jako vždy záleží nejvíce na oblasti použití. Osobně používám PostgreSQL tak trochu z nutnosti, MySQL se mi začíná líbit více. Je mnohem rychlejší (prý i ve srovnání s komerčními produkty jako MSSQL), nabízí bohatou a praktickou sadu vestavěných typů a funkcí, data ukládá velmi efektivně a je velmi dobře zdokumentován. Neumí však transakce ani některé moderní prvky jako jsou triggery nebo uložené procedury. Transakce na webu ale příliš nevyužijete a dají se v případě nutnosti nahradit zamykáním tabulek. Pro aplikace, kde potřebujete vysoký výkon mnoha paralelních přístupů, které data pouze čtou, je MySQL ideálním řešením. Na druhou stranu v mnoha aplikacích oceníte zejména bohaté možnosti programování logiky databáze a transakční zpracování v PostgreSQL. Například pro intranetové firemní agendy je podle mne PostgreSQL mnohem vhodnější.

Ostatní ne-SQL databáze
U nás, kde většina menších firem stále používá účetní programy pod DOSem, určitě oceníte možnost přístupu k dBase tabulkám (bez možnosti indexování). Mám v PHP napsány skripty, které čtou skladové zásoby z našeho účetnictví a aktualizují SQL databázi internetového obchodu. Setkal jsem se zde s jediným problémem: velmi praktická funkce dbase_get_recor­d_with_names (která mimochodem pochází z Čech), bez níž se nedostanete na záznam prostřednictvím názvů fieldů, je nezdokumentovaná, takže jsem se o její existenci dozvěděl náhodou prohlídkou zdrojových kódů.

Co se týče dalších podporovaných ne-SQL databází, nemám s nimi žádné zkušenosti, takže jen stručně: systém pro správu dokumentů Hyperwave, unixová specialita trochu připomínající Windows registry Dbm a DBAa jakési mně úplně cizí FilePro.

Našli jste v článku chybu?
Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

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

Přehledná titulka, průvodci, responzivita

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

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

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

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

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

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

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č?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

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

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

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

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

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

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

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?