Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP]Problem z wyświetlanie obrazka z bazy danych MySql
jacek.s
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

Ostrzeżenie: (0%)
-----


Witam wszystkich !
Mam funkcje "wyświetl" która pobiera wszystkie produkty (nazwa, cena, opis, zdjęcie, etc......) z wskazanej jako argument kategorii
("select * from Produkty where idKategorie=".$kat;) i wyświetla je po 5 na stronie,
wszystko super, natomiast mam problem z wyświetlanie obrazków umieszczonych w bazie :/
Po ustawieniu header("Content-type: $zdjecieTyp"); zwraca całe białe okno przeglądarki ze ścieżką do skryptu ( http://localhost/~jacek/index.php?kat=6 ),
po usunięciu header("Content-type: $zdjecieTyp"); pokazuje "���y��9Z5� �|9s�%v� ......""


  1. function wyswietl( $kat ){
  2.  
  3. include('php/bazaconf.php');
  4. $connection = new connection();
  5. $connection->connect();
  6.  
  7. $sSQL = "select * from Produkty where idKategorie=".$kat;
  8. $result = mysql_query($sSQL);
  9.  
  10. while($row = mysql_fetch_array($result, MYSQLI_ASSOC)) {
  11.  
  12. $zdjecieNazwa = $row[zdjecieNazwa];
  13. $zdjecieRozmiar = $row[zdjecieRozmiar];
  14. $zdjecieTyp = $row[zdjecieTyp];
  15. $zdjecie = $row[zdjecie];
  16. header("content-disposition: inline; filename=$zdjecieNazwa");
  17. header("Content-length: $zdjecieRozmiar");
  18. header("Content-type: $zdjecieTyp"); /* ? */
  19.  
  20. echo '<div id="prod">' . $row[nazwa] . '</div><br>';
  21. echo '<img src="'.$zdjecie.'" width="200" ><br><br>'; /* ? */
  22. echo ''.$row[opis] .'<br>';
  23. echo '<b>Cena: '.$row[cena].' zł</b>';
  24. echo'<hr>';
  25. }
  26. }


zdjecie to longblob

z bazą na pewno jest wszystko ok bo

  1. $sSQL = "select zdjecie from Produkty where idProdukty=1";
  2. $result = mysql_query($sSQL);
  3.  
  4. $row = mysql_fetch_assoc($result);
  5. header("Content-type:image/jpeg");
  6. echo $row[zdjecie];
  7.  

wyświetla zdjęcie.

czy ma ktoś jakiś pomysł ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Wywal linie 20-24, bo w tym momencie dopisujesz kod html do danych obrazka wysłanego do przeglądarki. Nie jestem pewien, ale chyba zobaczysz tylko ostatni obrazek wyciągnięty w pętli.

Ten post edytował darko 19.12.2009, 02:09:40


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
R4D3K
post
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


Dokładnie, definiujesz header, że to ma by obrazek z wyświetlasz kod HTML i dlatego widzisz krzaki
Go to the top of the page
+Quote Post
jacek.s
post
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

Ostrzeżenie: (0%)
-----


@darko

Cytat
Nie jestem pewien, ale chyba zobaczysz tylko ostatni obrazek wyciągnięty w pętli.


czyli żeby otrzymać wszystkie, np. tablica asocjacyjna {$nazwa, $dane_binarne, $rozmiar, $typ, $id } i przy wczytywaniu pozostałych danych z bazy na podstawie $id,
dobrze kombinuje ?


Cytat
Wywal linie 20-24, bo w tym momencie dopisujesz kod html do danych obrazka wysłanego do przeglądarki.

a jakiś pomysł jak to wstrzelić w kod html przy założeniu że będzie to więcej niż jeden obrazek ?
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W pętli nie wysyłać headera, a zapisywać obrazki na dysku (trochę bez sensu, skoro trzymasz je w bazie), następnie poza pętlą kod html <img src jakoś nic innego mi nie przychodzi, albo w pętli linki do skryptu, które po kliknięciu uruchomią skrypt, w którym połączysz się z bazą wyciągniesz dane obrazka i prześlesz header tak, jak to robisz teraz, tyle że nie wyświetlisz wszystkiego na raz, a po jednym obrazku i już bez printowania czegokolwiek winksmiley.jpg tylko "czysty" obrazek i nic więcej, żadnego kodu html.

Ten post edytował darko 19.12.2009, 12:17:31


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
jacek.s
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

Ostrzeżenie: (0%)
-----


Rozwiązałem problem na zasadzie :
przy otwarciu strony wymagającej obrazka pobierany jest do katalogu, a po jej opuszczeniu usuwany z katalogu.
Trochę na około ale działa niebiebo lepiej.

Dzięki wszystkim z rady.
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Był już kiedyś podobny wątek na forum, ale nie pamiętam namiarów.

Jednak konkluzja zawsze była taka sama - trzymanie zdjęć w bazie, to głupota... Raz - uniemożliwiasz cache'owanie przez przeglądarkę, dwa - obciążasz niepotrzebnie bazę, trzy - obciążasz niepotrzebnie interpreter. Pozorna zaleta, że wszystko jest w jednym miejscu? Poczekaj, prędzej czy później to wszystko da o sobie znać. winksmiley.jpg

Nie ma nawet 0.1% sytuacji uzasadniających trzymanie zdjęć w bazie; Twoja na pewno należy do 99.9%...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
v1t4n
post
Post #8





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


Zrob sobie oddzielny plik php do wyswietlania golego zdjecia i drugi do zalaczania go przez <img...> i dopisywania reszty tekstu.


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 22:25