Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wyświetlanie zdjęcia z bazy danych
Forum PHP.pl > Forum > Przedszkole
Czapla
Prosta rzecz a nastręcza mi problemów smile.gif
Formularz wysylania i zapis do bazy danych działa, rekord dla zdjecia jest ustawiony na LONGBLOB. Skrypt powinien wyświetlić obrazek, jednak tego nie robi...


tworzymy konstruktor dla klasy abstrakcyjnej i ustanawiamy polączenie do zmiennej $aDBC
Next(); funkcja ma pobierać kolejny wiersz z rezultatu zapytania SQL
ExecSQL (); funkcja wykonuje polecenie SQL do bazy danych
FieldByName (); funkcja ma za zadanie zwracać wartośc dla danego pola w encji


Plik wyswietlania

  1. <?php
  2. header("Content-type: image/jpg;");
  3.  
  4. include ("define.php");
  5. //include ("header.html");
  6.  
  7. $aDBC;
  8.  
  9. if (empty ($aDBC))
  10. {
  11. include ("dbmysql.php");
  12. $aDBC = new DBMySQL($MySQLServer,$MySQLDB,$MySQLUser,$MySQLPass);
  13. }
  14.  
  15. $SQL = " select zdjecie ";
  16. $SQL .= " from przy_zdjecie ";
  17. $SQL .= " where id_zdjecie=".$_GET['id_zdjecie'];
  18. $aDBC->ExecSQL ($SQL);
  19.  
  20. // probowalem tak 
  21. //$ID = $_REQUEST[id_zdjecie];
  22. //$SQL = " select zdjecie ";
  23. //$SQL .= " from przy_zdjecie ";
  24. //$SQL .= " where id_zdjecie=".$ID;
  25.  
  26.  
  27. do {
  28.  echo (base64_decode($aDBC->FieldByName ("zdjecie"))); // wyswietlanie
  29.  } while($aDBC->Next($SQL));
  30.  
  31.  
  32. //include ("foot.html");
  33. ?>


Jakieś pomysły?
piotrekkr
Hmm a jesteś pewny że tam jest w bazie to zdjęcie? Jeśli jest możliwe że nie musisz używać base64_decode(). Wydaje mi się że przeglądarka koduje do base64 przy wysyłaniu plików i dekoduje sama przy odbieraniu plików czyli twoje dekodowanie chyba jest niepotrzebne. Ale mogę się mylić. Druga sprawa to to że wynik zapytania chyba raczej będzie jeden zawsze jeśli chcesz wyciągnąc rekord o konkretnym id więc pętla do{} jest raczej niepotrzebna. Zauważyłem też że zakomentowałeś prawdopodobnie jakiś html np.
  1. <?php
  2. //include ("header.html");
  3. ?>
dobrze zrobiłeś bo nie da się jednocześnie zwracać html i obrazka smile.gif. Teraz żeby się upewnić czy zapytanie jest dobre możesz wkleić je do phpMyAdmina i zobaczyć czy coś zwróci i jeśli tak to trzeba szukać błędu gdzieś indziej. Ogólnie według mnie przechowywanie obrazków w bazie danych jest złym rozwiązaniem no ale twój wybór smile.gif. Napisz co zwraca zapytanie. Pozdrawiam.
Czapla
- zapytanie jest poprawne myadmin zwraca mi wynik
- zrobilem tak jak mowiłeś ale też nie działa

  1. <?php
  2. include ("define.php");
  3. //include ("header.html");
  4. header("Content-type: image/jpg;");
  5.  
  6. $aDBC;
  7.  
  8. if (empty ($aDBC))
  9. {
  10. include ("dbmysql.php");
  11. $aDBC = new DBMySQL($MySQLServer,$MySQLDB,$MySQLUser,$MySQLPass);
  12. }
  13.  
  14. $SQL = " select zdjecie ";
  15. $SQL .= " from przy_zdjecie ";
  16. $SQL .= " where id_zdjecie = ".$_GET['id_zdjecie'];
  17. $aDBC->ExecSQL ($SQL);
  18.  
  19. //do {
  20. echo ($aDBC->FieldByName ("zdjecie"));
  21. //print ($aDBC->FieldByName ("zdjecie"));
  22. //echo (base64_decode($aDBC->FieldByName ("zdjecie")));
  23. //} while($aDBC->Next($SQL));
  24. ?>


Pozdrawiam
sniezny_wilk
A co się Tobie wyświetla ? Pusta strona ? Wyrzuć tego header'a i zobacz czy PHP nie sypie jakimiś błędami, oraz czy wyrzuca na ekran cokolwiek.
Czapla
po zarymowaniu headera wyświetla sie pusta strona.
bez zarymowania na samym środku

coś takiego:


rozmiar tego obrazka to 0 bajtów
sniezny_wilk
Cytat(Czapla @ 25.06.2008, 08:26:42 ) *
po zarymowaniu headera wyświetla sie pusta strona.
bez zarymowania na samym środku

coś takiego:

rozmiar tego obrazka to 0 bajtów


Skoro bez headera nic się nie wyświetla, to znaczy, że nie pobierasz prawidłowo danych, sprawdź jeszcze raz zapytania. Wyświetlaj też samo zapytanie. Na mój gust to PHP rozróżnia wielkości znaków w tablicy $_GET, w adresie podajesz ID_ZDJECIE, a w PHP id_zdjecie, zdecyduj się..
Czapla
lol

miałeś racje miałem ID_ZDJECIE z dużych liter biggrin.gif

pomagajka odemnie smile.gif
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.