ugrás a tartalomhoz

Több kép visszaadása egy HTTP válaszban

Anonymous · 2005. Okt. 15. (Szo), 07.12
Sziasztok!

Egy Postgresql adatbázisból szeretnék képeket megjeleníteni az alábbi kis progival:
  1. <?php  
  2. header("Content-type: image/jpeg");   
  3. $conn=pg_connect("dbname=pic user=jomagam password=xxxxx");  
  4. pg_exec($conn,"begin");  
  5. $result=pg_exec($conn,"select * from pictest;");  
  6. $fd=pg_loopen($conn,pg_result($result,0,image),"r");  
  7. pg_loreadall($fd);  
  8.   
  9. $fd=pg_loopen($conn,pg_result($result,1,image),"r");  
  10. pg_loreadall($fd);  
  11.   
  12. $fd=pg_loopen($conn,pg_result($result,2,image),"r");  
  13. pg_loreadall($fd);  
  14.   
  15. pg_loclose($fd);  
  16. pg_exec($conn,"commit");  
  17. pg_close();  
  18. ?>  
A probléma az, hogy mindíg csak az első lekérdezés hajtódik végre (most az első képet jeleníti meg, ha a nulla helyébe egyest írok, akkor a másodikat, stb... Mit szúrtam el vajon?

Segítségeteket előre is köszönöm:

Imre
 
1

Kiegészítés

Anonymous · 2005. Okt. 15. (Szo), 07.33
Még annyit az előzőhöz, hogy így átírva:
  1. <?php  
  2. //header("Content-type: image/jpeg");   
  3. $conn=pg_connect("dbname=pic user=jomagam password=xxxxxx");  
  4. pg_exec($conn,"begin");  
  5. $result=pg_exec($conn,"select * from pictest;");  
  6.   
  7. pg_lo_export($conn,pg_result($result,0,image),"/tmp/aaaaa.jpg");  
  8. pg_lo_export($conn,pg_result($result,1,image),"/tmp/bbbbb.jpg");  
  9. pg_lo_export($conn,pg_result($result,2,image),"/tmp/ccccc.jpg");  
  10.   
  11. pg_exec($conn,"commit");  
  12. pg_close();  
  13. ?>  
szépen létrehozza mindhárom képet, tehát az adatbázissal minden rendben.
2

Egy kérés

Jano · 2005. Okt. 15. (Szo), 09.19
A probléma valószínűleg az, hogy ami meghívja ezt a scriptet az egy fájlt vár eredményül. Te a headerben jelzed is, hogy jön egy kép de egy kép neve alatt nem lehet több képet átküldeni! Ezt a scriptet annyiszor kell meghívni ahány képet kiakarsz küldeni.
3

Ismételt meghívások

Anonymous · 2005. Okt. 15. (Szo), 16.03
Köszi a választ! Megpróbáltam include -ként beemelni az alábbiak szerint, de sajnos változatlanul nem megy. (Igaz, most már egyik képet sem jeleníti meg, csak egy hibaüzenetet, miszerint
"http://localhost/tesztek/4.php” cannot be displayed, because it contains errors." - és ami az érdekes, ezt képként, nem szövegként jeleníti meg.. :-(
  1. <?php  
  2.   
  3. function kep_kiir($i)  
  4.   
  5. {  
  6. header("Content-type: image/jpeg");   
  7. $conn=pg_connect("dbname=pic user=xxxxx password=xxxxxx");  
  8. pg_exec($conn,"begin");  
  9. $result=pg_exec($conn,"select * from pictest");  
  10. $fd=pg_lo_open($conn,$i,"r");  
  11. pg_lo_read_all($fd);  
  12. pg_lo_close($fd);  
  13. pg_close($conn);  
  14. }  
  15.   
  16. $i=0;  
  17. kep_kiir($i);  
  18. $i++;  
  19. kep_kiir($i);  
  20. $i++;  
  21. kep_kiir($i);  
  22. ?>  
4

Még mindig több képet adsz vissza...

zila · 2005. Okt. 16. (V), 08.49
A képmegjelenítő php-det tedd egy külön fileba (4.php), a tesztfileod pedig lehet akár html is, benne a következők:
  1. <img src="/4.php?i=0"><br>  
  2. <img src="/4.php?i=1"><br>  
  3. <img src="/4.php?i=2">  
A 4.php tartalma:
  1. <?php  
  2. $i = $_GET['i'];  
  3.   
  4. header("Content-type: image/jpeg");   
  5. $conn=pg_connect("dbname=pic user=xxxxx password=xxxxxx");  
  6. pg_exec($conn,"begin");  
  7. $result=pg_exec($conn,"select * from pictest");  
  8. $fd=pg_lo_open($conn,$i,"r");  
  9. pg_lo_read_all($fd);  
  10. pg_lo_close($fd);  
  11. pg_close($conn);  
  12. ?>  
üdv,
Zila
5

Javulás...

Anonymous · 2005. Okt. 16. (V), 10.34
Köszi a választ, a helyzet annyiból javult, hogy eddig csak egy képet jelenített meg, most hármat nem...:-) (Három "üres" képhely jelenik csak meg.)