Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP] Wyświetlanie obrazków w pętli while
Forum PHP.pl > Forum > Przedszkole
adikdvb
Witam,

Poniższy kod służy do wyświetlania informacji z programu SubiektGT:

  1. <?php
  2. // parametry serwera
  3. $serwer = "server_ip"; // nazwa serwera mysql
  4. $login = "login"; // login do bazy
  5. $haslo = "pass"; // haslo do bazy
  6. $baza = "db_subiektgt"; // nazwa bazy
  7. $tabela = "sl_GrupaTw"; // nazwa tabeli
  8.  
  9. $grp = "Akcesoria";
  10.  
  11. if($grp) {
  12.  
  13. // łączymy się z bazą danych
  14. if (mssql_connect($serwer, $login, $haslo) and mssql_select_db($baza)) {
  15.  
  16. // zapytanie do bazy danych
  17. $wynik = mssql_query("SELECT grt_Nazwa, tw_Symbol, tw_Nazwa, tw_Opis, tw_DostSymbol, st_Stan, zd_Zdjecie, zd_Id, zd_Glowne FROM sl_GrupaTw INNER JOIN
  18. tw__Towar ON grt_Id = tw_IdGrupa INNER JOIN
  19. tw_Stan ON tw_Id = st_TowId INNER JOIN
  20. tw_ZdjecieTw ON tw_Id = zd_IdTowar
  21. WHERE grt_Nazwa='$grp'") or die("Błąd w zapytaniu!");
  22. }
  23. else echo "Nie mogę połączyć się z bazą danych!";
  24. while($rek = mssql_fetch_assoc($wynik)) {
  25. $id = $rek['grt_Id'];
  26. $grupa = $rek['grt_Nazwa'];
  27. $symbol = $rek['tw_Symbol'];
  28. $opis = $rek['tw_Opis'];
  29. $foto = $rek['zd_Zdjecie'];
  30. echo '<br />';
  31. echo '<b style="color: #FF0000;">';
  32. echo " $grupa";
  33. echo '</b>';
  34. echo '<br />';
  35. echo "Symbol:";
  36. echo '<br />';
  37. echo iconv("cp1250","utf-8",$symbol);
  38. echo '<br />';
  39. echo "Opis:";
  40. echo '<br />';
  41. echo iconv("cp1250","utf-8",$opis);
  42. }
  43. }
  44. ?>


Wszystko działa poprawnie. Problem pojawił się, kiedy chcę wyświetlić dla każdego produktu jego zdjęcie umieszczone w SubiekcieGT.

header('Content-type: image/jpeg');
echo $foto;

Z tego co wiem typ umieszczanie typu nagłówka w pętli jest błędem. Zresztą przy takim zastosowaniu pojawiają się krzaczki zamiast grafiki. W jaki sposób należy wyświetlić obrazek dla każdego produktu? Jeśli umieszczę poza pętlą np. kod:

  1. <img src="<?php echo $foto; ?>" >


dostanę jedynie ostatni obrazek produktu.
maly_swd
czy w $foto masz nazwe pliku czy zawartosc pliku?


jesli zawartosc to:
....
$foto = $rek['zd_Zdjecie'];
file_put_contents($id.".jpg", $foto);
echo "<img src='{$id}.jpg'>";
...

a jak tam jest nazwa pliku
....
echo "Opis:";
echo '<br />';
echo iconv("cp1250","utf-8",$opis);
echo "fotka:";
echo '<br />';
echo "<img src='{$foto}'>";
adikdvb
Wykonałem kwerendę za pomocą SQL Server Management Studio Express i w kolumnie zd_Zdjecie mam:

0xFFD8FFE000104A46494600010101006000600000FFD...

więc jest to zawartość

W moim przypadku muszę zdefiniować wcześniej jeszcze jedną zmienną:

$id_foto = $rek['zd_Id']

czyli kod będzie wyglądał następująco:

file_put_contents($id_foto.".jpg", $foto);
echo "<img src='{$id_foto}.jpg'>";

Po wykonaniu mam błąd:

Warning: file_put_contents(8.jpg) [function.file-put-contents]: failed to open stream: Permission denied in /var/www/subiekt-www3.php on line 46

Czy należy jeszcze zdefiniować folder, gdzie będą umieszczane tymczasowo pliki ze zdjęciami? Nie za bardzo rozumiem jak to działa... :?
maly_swd
tak, musisz zdefiniowac folder z prawami zapisu.

Dziala to tak, ze z bazy pobiera zawartosc zdjecia, zapisuje go do pliku o nazwie ID (czyli bedzie to unikalna nazawa).
A nastepnie daje info do przegladarki ze ma go wyswietlic z tej lokalizacji.
adikdvb
dzięki, wszystko działa jak trzeba smile.gif

+ dla Ciebie
Tasior
  1. Witam, pracuję właśnie na bazie mssql z SubiektGT v.1.26 .
  2. Dane w bazie o zdjęciach zapisane są w tej postaci:
  3. 0xFFD8FFE000104A46494600010101006000600000FFD...
  4. (widać to z poziomu SQL Server Management Studio Express )
  5.  
  6. Próbowałem wykonać w PHP poniższy kod w celu zapisu i wyświetlenia pobranej fotki z bazy do pliku jpg.
  7. Jednak tak to nie działa. Przy próbie wyświetenia fotki w IE mam krzyrzyk. Po odpaleniu utworzonego pliku obrazka w irfanView mam komunikat.
  8. JPEG datasream constains no image.
  9.  
  10. JAK OTRZYMAĆ OBAZKI Z BAZY?
  11. PROSZĘ O POMOC!




  1. <?php
  2. $server = 'KOMP\INSERTGT';
  3. $baza = 'BAZA';
  4. $login = 'test';
  5. $haslo = 'test';
  6.  
  7. if (mssql_connect($server, $login, $haslo) and mssql_select_db($baza)) {
  8. // zapytanie do bazy danych
  9. $wynik = mssql_query("SELECT tw__Towar.tw_Id, tw__Towar.tw_Symbol,
  10. tw__Towar.tw_Nazwa, tw__Towar.tw_Opis, tw_Cena.tc_CenaNetto3, tw__Towar.tw_IdGrupa,
  11. tw__Towar.tw_Uwagi , tw_Stan.st_Stan ,sl_Magazyn.mag_Nazwa , sl_StawkaVAT.vat_Stawka ,
  12. sl_StawkaVAT.vat_Id , zd_Zdjecie
  13. FROM tw__Towar
  14. INNER JOIN tw_Cena ON tw__Towar.tw_Id = tw_Cena.tc_IdTowar
  15. INNER JOIN tw_Stan ON tw__Towar.tw_Id = tw_Stan.st_TowId
  16. INNER JOIN tw_ZdjecieTw ON tw__Towar.tw_Id = tw_ZdjecieTw.zd_IdTowar
  17. INNER JOIN sl_StawkaVAT ON tw__Towar.tw_IdVatSp = sl_StawkaVAT.vat_Id
  18. INNER JOIN sl_Magazyn ON sl_Magazyn.mag_Id = tw_Stan.st_MagId
  19. WHERE (tw__Towar.tw_SklepInternet = 1) AND (tw_Zablokowany=0)") or die("Błąd w zapytaniu!");
  20. }
  21. else echo "Nie mogę połączyć się z bazą danych!";
  22. while($rek = mssql_fetch_assoc($wynik)) {
  23.  
  24. $foto = $rek['zd_Zdjecie'];
  25. file_put_contents("zs.jpg", $foto);
  26. file_put_contents("zs.txt", $foto);
  27. }
  28. header('Content-type: image/jpeg');
  29. echo "<img src='zs.jpg'>";



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.