$FILENAME="pg2www.phtml"> $MAIL="pam@fi.muni.cz">
Poslední úprava: | Zmena kodovani cestiny |
Tato stránka se zabývá způsoby, jak získat data z Postgresovské databáze a následně je zobrazit na WWW, případně jak data do datadabáze prostřednictvím webu vložit. Pokusím se shrnout možnosti jak lze toto udělat.
Možné způsoby (pokud vím) jsou:
U každého příkladu PHP/FI dokumentu vždy naleznete odkaz na stránku, která obsahuje stejné řádky jako příklad. Tím se můžete podívat na výsledek zpracovaného dokumentu. Samozřejmě bude následovat stručný popis příkladu.
psql
umí provádět výstup
do jazyka HTML. (Pozor! Tato možnost je k dispozici pouze v
PostgreSQL).psql -H -c "select * from pg_user"Pokud umíte psát CGI skripty a formuláře v HTML můžete začít pracovat.
Já se budu věnovat jen nejzákladnějším věcem, které je potřeba udělat, abyste se mohli připojit na Postgres a uvedu jednoduchou aplikaci, která předvede základní operace s databází.
PHP/FI rozšiřuje HTML o značky typu:
<? příkazy PHP/FI oddělené středníkem>
To znamená, že před zobrazením PHP/FI dokumentu se musí spustit nějaký program, který tyto značky zpracuje. Tímto programem může být
PHP/FI na vašem systému instalováno, stačí vědět jestli jako CGI sript nebo
jako modul. Při prvním způsobu je nutné uvádět odkazy na PHP/FI dokumenty
nasledujícím způsobem:
http://vaše.doména/cgi-bin/php.cgi/cesta/soubor.html
Při druhém stačí dát takovémuto souboru příponu .phtml a www
server se o něj postará.
Na Fakultě informatiky je zatím k dispozici pouze první způsob, ale
na druhém se už pracuje.
Příklad
1:
Jak navázat spojení s Postgresem a zase ho
zrušit?
Vytvořte HTML dokument:
<HTML> <BODY> 1. <?setshowinfo(0)> 2. <?seterrorreporting(0)> <h2>Zkouška spojení z Postgresem</h2> <? 3. $con = pg_Connect("localhost", "5432", "", "", "pam"); 4. if (!$con) { echo "<b>Navázání spojení selhalo!</b><br>\n"; 5. echo pg_errorMessage($con); 6. exit; } echo "<b>Spojení bylo úspěšné.</b><br>\n"; echo "Nyní jsi připojen:<br>\n"; 7. echo "k databázi: <b>", pg_DBname($con), "</b><br>\n"; 8. echo "na stroji: <b>", pg_Host($con), "</b><br>\n"; 9. echo "přes port: <b>", pg_Port($con), "</b><br>\n"; 10. pg_Close($con); > </HTML> </BODY>Příkazy PHP/FI v tomto příkladu postupně provedou:
Příklad
2:
Jak provést dotaz na databázi Postgres95/PosgreSQL?
Nejprve se musíme spojit s databází. Viz. Příklad 1. Provedení dotazu si ukážeme na SQL
dotazu
select * from pg_user where usename like 'p%'Který z tabulky uživatelů vybere ty, kteří začínají na písmeno p. Náš předchozí soubor priklad1.phtml rozšíříme o následující řádky (vložením mezi řádek 9. a 10.)
echo "<hr>\n"; echo "K Postgresu na stroji <b>"; echo pg_Host($con); echo "</b>\nmají přístup tito uživatelé začínající na písmeno p:<br>\n"; 1. $result = pg_Exec($con, "select * from pg_user where usename like 'p%'"); 2. if (!$result) { echo "Došlo k chybě.<br>\n"; echo pg_errorMessage($con); exit; } 3. $num = pg_NumRows($result); $i = 0; while ($i < $num) { 4. echo pg_Result($result, $i, "usename"), "<br>\n"; $i++; } 5. pg_FreeResult($result);Opět se pokusím okomentovat jednotlivé příkazy z PHP/FI. Podrobný popis všech příkazů naleznete ve výše zmíněném manuálu PHP/FI.
Příklad
3:
Jak získat data pro Postgres95/PostgreSQL z webu?
Jako pro cokoli jiného, tedy přes formuláře. Návod pro
psaní formulářů je dostupný na fakultních stránkách. Já jen
upozorním na to, že PHP/FI poskytuje podporu pro psaní formulářů, kterou
ilustruje následující příklad.
Soubor priklad3.html obsahuje tyto řádky:
<HTML> <BODY> <h2>Ukázka práce s formuláři přes PHP/FI</h2> Zadej prosím svoje jméno a věk. <FORM ACTION="display.phtml" METHOD=POST> Jméno: <INPUT TYPE="text" name="name"> Věk: <INPUT TYPE="text" name="age"> <INPUT TYPE="submit" VALUE="Odeslat"> </FORM> </BODY> </HTML>Tedy nic jiného, než velmi jednoduchý formulář. Skript display.phtml, který ho zpracuje (napsaný v PHP/FI) může vypadat například takto:
<HTML> <BODY> <?setshowinfo(0)> <?echo "$name o sobě tvrdí, že je mu $age.<p>"> </BODY> </HTML>
Teď už jen uvedu odkaz na aplikaci napsanou v PHP/FI nad Postgresem.
Obsah | Pavel Matula |