( Marcin )
Przegl▒danie na szczΩ╢cie nie jest zbyt skomplikowane, najtrudniejsze jest
niestety wstawianie i kasowanie.
Zw│aszcza usuwanie wierszy odwo│uj▒cych siΩ do bazy nie jest trywialne
(nale┐y stworzyµ triggera) ale o tym w przysz│o╢ci.
A teraz przejdÑmy do tematu.
W pliku gdzie ma siΩ pojawiµ obrazek z bazy umieszczam:
# nadajΩ jaki╢ identyfikator, aby mo┐na siΩ by│o w bazie jako╢ odwo│aµ do
obrazka.
$nr=....
# wy╢wietlam obrazek - odwoluje sie do strony, kt≤ra go stworzy
(m_obrazek.php3)
echo '';
?>
W pliku m_obrazek.php3 umieszczam tylko to:
Header("Content_type: image/gif");
header("Expires: Mon, 31 Nov 1997 05:00:00 GMT"); // data w przeszlosci
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // zawsze modyfikowany
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
// Pod│▒czenie do bazy
$conn = pg_Connect ("","","","","komis");
if (!$conn) { exit; }
// select, kt≤ry wybiera na podst. nr zdjΩcie
$sel="Select nr_kolejny, zdjecie from m_pojzdj where nr_kolejny=".$nr ;
pg_Exec ($conn, "begin"); // pocz▒tek transakcji
$result = pg_Exec ($conn, $sel); // uruchomienie selecta
if (!$result) { exit; }
$row = pg_fetch_object ($result, 0); // pobranie obiektu
$fd=pg_loopen($conn,$row->zdjecie,"r"); // otwarcie OID'a
pg_loreadall($fd); //przeczytanie zawarto╢ci i przes│anie jako ci▒gu
bajt≤w
pg_loclose($fd);
pg_exec($conn,"commit"); // koniecznie potwierdzenie transakcji
pg_exec($conn,"End"); // i end
pg_close($conn);
?>
W pliku m_obrazek.php3 nie mo┐e siΩ pojawiµ ┐adne echo ani nic dodatkowego,
gdy┐ browser ma to traktowaµ jako przesy│any ci▒g bajt≤w.
Nag│≤wek takiego pliku jest te┐ bardzo wa┐ny, ┐eby przegl▒darka odczyta│a to
co trzeba z bazy a nie wy╢wietla│a jakie╢ starocie z cache'a.
U mnie to dzia│a - mo┐na sprawdziµ na www.komisy.plocman.pl. Strona co
prawda nie uruchomiona ale jakie╢ testowe dane tam s▒ - i to dzia│a na
Postgresie.
Marcin (marcin.czarny@orlen.pl)
|