|
V súčasnosti sme svedkami, že WEB a databázové
informačné systémy sa stávajú jedným uceleným systémom, v ktorom WEB
technológia v spojení s prehliadačmi slúži ako strana klientov a WWW server
spolu s databázovým serverom ako zdroj dát a informácií prúdiacich do vnútra
podnikov a firiem alebo na verejnosť.
Cieľom tohto tútora a špeciálne tejto kapitoly nie je
vysvetľovať, čo je to databázový systém a SRBD. To sa môžete dozvedieť
buď na prednáškach /napr. p. Matiaška /, prípadne z literatúry, ktorej je
požehnane /odporúčam Pokorného, prípadne C.J. Date/. Pokúsim sa však načrtnúť,
ako SRBD komunikuje zo svojim okolím.
Najčastejšie býva SRBD /Systém Riadenia Bázy Dát
– motor databázového stroja – engine/spustený ako daemon /UNIX/ alebo služba-service
/Windows NT/. Komunikuje prostredníctvom socketu (URL počítača
+ port + protokol) s klientami
(ostatnými aplikáciami) a odpovedá na ich dopyty. Pre zadávanie
dopytov sa používa jazyk SQL.. Skript v jazyku PHP môže byť tiež klientom,
ktorý sprístupňuje obsah databázy na Web. Nakoľko však každý SQL server
používa vlastný protokol pre komunikáciu s klientami, klient musí podporovať
viac protokolov, čo je dosť nevýhodné. Preto vzniklo na platforme Windows
rozhranie ODBC, ktoré umožnuje používať jednotné volania ODBC rozhrania,
ktoré už potom zaistí predanie protokolom príslušného databázového
serveru. V súčasnosti sa ODBC začína uplatňovať aj pod OS UNIX /iODBC,
Openlink/. Výhodou ODBC je, že portovanie skriptu na iný databázový server
je ľahké a rýchle, nakoľko nie je nutné zasahovať do kódu aplikácie. Nevýhodou
starších ODBC driverov bol nižší výkon oproti tzv. natívnym ovládačom.
Novšien SRBD však obsahujú ako jediný natívny ovládač práve ODBC driver,
pre ktorý sú optimalizované. V súčasnosti PHP podporuje okrem rozhrania
ODBC aj nasledujúce databázy prostrednítvom natívneho protokolu:
- ü
MySQL
- ü
mSQL
- ü
ADABAS
- ü
Informix
- ü
Microsoft SQL Server
- ü
Oracle
- ü
Sybase
- ü
PostgresSQL
- ü
Solid
- ü
Velocis
- ü
DBASE
- ü
dbm
- ü
FilePro
Pri
komunikácii s databázovým serverom preto dochádza k nasledujúcej
„reťazovej“ tranzakcii.
Prehliadač------->HTTP--------WWWserver-------->SAPI
---------PHP------------ODBC------NATIVE----->ENGINE
---databáza------ENGINE-------PHP-----SAPI--->
WWWserver--->HTTP--->Prehliadač
O dopytovacom
jazyku SQL a inštalácii databázových systémov by bolo možné písať
veľa, preto odporúčam obrátiť sa na príslušných autorov.
Neskôr sa
pousilujem rozpracovať trošku túto kapitolu, aby nebolo nutné odvolávať sa
na cudziu literatúru, u nás väčšinou nedostatkovú.
6.1 PHP a databázy
Ako som už spomenul, PHP podporuje viac
databázových systémov. Funkcie pre prácu s určitým SRBD začínajú
jeho názvom. PHP preto obsahuje funckie začínajúce ODBC_ , ktoré slúžia
pre spoluprácu s ODBC rozhraním, funkcie začínajúce na Pg_, ktoré slúžia
na komunikáciu s SRBD Postgres alebo MySQL_, ktoré zas komunikujú s MySQL
databázovým systémom, ktorý je asi najobľúbenejším, a s ktorým
budeme aj my pracovať.
Práca s databázami
je v PHP veľmi jednoduchá. Najprv je nutné pripojiť sa k SQL
serveru pomocou funkcie xxx_Connect(), kde za xxx dosadíme predponu príslušného
SRBD (MySQL_Connect( ), Pg_Connect( )). SQL dotaz zadáme pomocou
funkcie xxx_Exec( ) alebo xxx_Query( ). Výsledok čítame
prostredníctvom funkcií xxx_Fetch_Row() a xxx_Result().
6.2 PHP a MYSQL
Pripojenie k databáze vyvoláme
funkciou MySQL_Connect( ).
Parametrom je meno počítača, na ktorom beží MySQL. V prípade, že
pristupujeme k databáze, ktorá vyžaduje login heslo, zadáme ich ako ďalšie
parametre Výsledkom funkcie je číslo spojenia, ktoré sa používa v nasledujúcich
funkciách.
$spojenie
= MySQL_Connect(“localhost”);
$spojenie
=MySQL_Connect(“mgx”,”nobody”,”anonym”);
Príslušnú databázu, s ktorou
chceme pracovať zvolíme pomocou MySQL_Select_DB
( ); ISF znamená
informačný systém fakulty.
MySQL_Select_DB(“isf“);
Pre
zadávanie SQL dopytov slúži funkcia MySQL_Query(
). Prvým parametrom je SQL výraz a druhý číslo
spojenia. Tento parameter je nepovinný a môžeme ho vynechať. Výsledkom
je číslo, ktoré slúži na prácu s výsledko SQL dopytu ako referenčné
číslo.
$vysledok
= MySQL_Query(“SELECT * FROM OS_Udaje ORDER BY Priezv”);
Pomocou
referenčného čísla je možné získať ďalšie informácie, napríklad počet
n-tíc tuples v tejto projekcii. Na to slúži funkcia MySQL_Num_Rows (),
ktorej parameter tvorí referenčné číslo.
echo “ V tabulke
je “.MySQL_Num_Rows($vysledok).”
zaznamov<BR>”;
Výpis jednotlivých entíc zabezpečuje
funkcia MySQL_Fetch_Array(),
ktorej paramerom je referenčné číslo. Funkcia vráti
obsah entice a presunie sa na ďalšiu. Ak už niet čo vypísať, vráti
false. Obsah všetkých n-tíc zabezpečíme cyklom:
- While
($ntica=MySQL_Fetch_Array($vysledok))
-
echo $ntica[“RC”].”
“.$ntica[“Meno”].” “.$ntica[“Priezv”].”<BR>”;
Spojenie
ukončíme pomocou funkcie MySQL_Close( ), kde parametrom
je číslo spojenia.
Vlastné ošetrenie
chýb zabezpečíme pomocou znaku „@” pred názvom funkcie., čím
potlačíme výpis chybových hlásení, ktoré zabezpečuje PHP.
V nasledujúcich príkladoch budeme
vytvárať informačný systém fakulty, ktorý bude obsahovať informácie o študentoch,
učiteľoch a predmetoch. Podrobne
6.3 PHP a ODBC
Pripojenie k databázovému serveru
zabezpečí funkcia ODBC_Connect( ). Jej parametre tvorí
názov databázy, login a heslo. Funkcia vracia číslo spojenia.
$spojenie=ODBC_Connect(“isf”,”nobody”,”anonym”);
SQL
dopyt vykon8va funkcia ODBC_Exec(
), parametre tvroí číslo spojenia a samotný
SQL príkaz v úvodzovkách. Funkcia vracia referenčné číslo, pomocou
ktorého funckia ODBC_Fetch_Row(
) sprístupňuje n-tice. Ak už niet čo sprístupňiť,
vráti false. Jednotlivé položky aktuálneho záznamu čítame prostredníctvom
funkcie ODBC_Result( ). Jej parametre tvorí názov položky a číslo referencie, ktore vracia funkcia ODBC_EXEC().
- while (ODBC_Fetch_Row($vysledok))
- echo
ODBC_Result($vysledok,”RC”).” “.ODBC_Result($vysledok,
-
“Meno”).” “.ODBC_Result($vysledok,”Priezv”).”
<BR>”;
Databázu uzavrieme pomocou ODBC_Close()
.
N Á V R A T
Copyright 2003 MGX
|