Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wydobywanie grafiki z pól typu BLOB
Forum PHP.pl > Forum > PHP
rav_83
Pracuje na bazie w ktorej niestety wszystkie pliki graficzne (zdjecia) zapisane sa w polach typu BLOB. W jaki sposob wyciagnac takie zdjecie? Czytalem, ze w tym celu trzeba uzyc odpowiednich naglowkow?
Puciek
A jak sa wpisane w blob ? Zawartoscia pliku ? W tym momencie msusiz wiedziec jakie rozszerzenie i tutaj klania sie header" title="Zobacz w manualu PHP" target="_manual ktorym wywolujesz odpowiednni naglowek a potem tylko echo na tresc zapisu z bazy happy.gif
crash
grafika.php:
  1. <?php
  2.  
  3. header('Content-type: image/jpeg'); // /png /gif
  4.  
  5. $grafika = mysql_fetch_row(mysql_query('SELECT dane FROM grafiki WHERE id = '.(int)$_GET['id'].' LIMIT 1'));
  6.  
  7. echo $grafika[0];
  8.  
  9.  
  10. ?>

Wywołanie:
  1. <img src="./grafika.php?id=3" alt=""/>

To tylko przykład, tak żebyś zrozumiał co i jak smile.gif
rav_83
Niestety nie dziala sad.gif moj pelny kod wyglada tak:
  1. <?php
  2.  
  3. @ $db = mysql_pconnect(&#092;"xxx\",\"xxx\",\"xxx\");
  4. if (!$db)
  5. {
  6. echo &#092;"blad: nie mozna polaczyc sie z baza danych, sproboj ponownie.\";
  7. }
  8.  
  9.  mysql_select_db(&#092;"xxx\");
  10.  
  11. header(&#092;"Content-type: image/jpg\"); 
  12.  
  13. $grafika = mysql_fetch_row(mysql_query(&#092;"SELECT unikat FROM zdjecia WHERE id='PSK00258' LIMIT 1\"));
  14.  
  15. echo $grafika[0];
  16.  
  17.  
  18. ?>


W tym momencie jest juz blad....

"Cannot modify header information - headers already sent by (output started at oto.php:4) in foto.php on line 31

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in foto.php on line 33"
tts
to chyba nie jest pelny kod bo rozumiem, ze te bledy, ktore ci wyskakuja odnosza sie do tego listingu jaki przestawies. to co tu sie stalo to po pierwsze blad zapytania sql i wyslanie do przegladarki komunikatu
Cytat
blad: nie mozna polaczyc sie z baza danych, sproboj ponownie.
, a skoro juz przeslales cokolwiek do przegladarki to wywolanie header generuje kolejny blad. reasumujac proponuje sprawdzic wpierw co sie stalo zlego w zapytaniu sql. a co do kodu to po mojemu to powinno byc jakos tak zorganizowane (albo jeszcze lepiej):
  1. <?php
  2.  
  3. function polacz() {
  4.  # to oczywiscie powinno wyladowac w jakiejs bibliotece
  5.  $db = @mysql_pconnect(&#092;"xxx\",\"xxx\",\"xxx\");
  6. if (!$db)
  7. return false;
  8.  else {
  9. if(!mysql_select_db(&#092;"xxx\");
  10.  return false;
  11. else
  12.  return true;
  13.  }  
  14. }
  15.  
  16.  
  17. function pobierz_zdjecie($id_zdjecia) {
  18.  if(!polacz())
  19. return false;
  20.  else {
  21. $wynik = mysql_query(&#092;"SELECT unikat FROM zdjecia WHERE id='$id_zdjecia' LIMIT 0, 1\");
  22. if(!$wynik)
  23.  return false;
  24. else {
  25.  if(mysql_num_rows($wynik) != 1)
  26. return false;
  27.  else {
  28.  $wynik = mysql_fetch_array($wynik);
  29.  return $wynik; 
  30.  } # (else)  if(mysql_num_rows($wynik) != 1)
  31. } # (else) if(!$wynik)
  32.  } # (else) if(!polacz())
  33. } # function pobierz_zdjecie($id_zdjecia)
  34.  
  35. # glowny skrypt: (oczywiscie jeszcze trzeba sprawdzic zanim zaczniemy przetwarzac parametry j
    a
  36. ie do niego wprowadzamy) 
  37.  
  38. # (....)
  39.  
  40. $grafika = pobierz_zdjecie($id);
  41. if( !$grafika ) {
  42.  # komunikat o bledzie
  43. }
  44. else {
  45.  header(&#092;"Content-type: image/jpg\");
  46.  echo $grafika['unikat'];  
  47. }
  48.  
  49. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.