Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql,php] grafika w bazie
Forum PHP.pl > Forum > PHP
mitp
php programmer usunolem ten post, bo miałem napisać go od nowa, bylo wiele bledow, a kolo 23 przeslao mi odpowiadac forum, padlo i tak juz zostal ten post ... wieczorkiem przedstawie o co chodzi bo w pracy nie mam dostepu do kodu ... sorki
php programmer
Zamiast usuwać posta, trzeba było dopisać,
jak rozwiązałeś problem lub chociaż podać link do rozwiązania,
być może ktoś w przyszłości bedzie miał podobny problem
mitp
Witam, mam mały problem z wyświetlaniem grafiki z bazy, otóż dołączam plik *.php do pliku w którym mam w sekcji <head></head> następujące znaczniki:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/>
  2. <meta http-equiv="Content-Language" content="pl"/>
  3. <title>tytuł</title>


problem w tym że jak chce wyświetlić grafikę, to wyskakują dziwne krzaczki, natomiast jak wykonam sam skrypt, w ktorym nie mam znacznikow meta, to skrypt działa poprawnie i wyswietla zdjecie, jak temu zaradzić?

skrypt:
  1. <?php
  2. ...
  3. $zapytanie= mysql_query ("SELECT zdjecie,typ FROM $mysql_tabela WHERE user='test' AND id_ogloszenia=2") or
  4. die ("Błąd w zapytaniu !");
  5. $row = mysql_fetch_assoc($zapytanie);
  6. $grafika=$row['zdjecie'];
  7. $typpliku=$row['typ'];
  8. header("Content-type:$typpliku");
  9. print $grafika;
  10. ?>


problem w header("Content-type:$typpliku"); ktory pobieram z bazy, a wczesniej w meta mam już podany i się gryzą ...
franki01
Moze cos pomoze iconv" title="Zobacz w manualu PHP" target="_manual?
LBO
Skoro dołączasz to strumienia zdjęcia tekst (w tym wypadku nagłówek dokumentu HTML) to się nie dziw, że nie działa.
Albo HTML, albo zdjęcie.
mitp
Witam, no ale chyba musi być jakieś rozwiązanie? żeby można było zarówno tekst jak i obrazek wyświetlać?
wlamywacz
No to dajesz plik obrazek.php w nim kod generowania obrazka i robisz
  1. <img src="obrazek.php">

I pozamiatane
mitp
dzięki, super działa, tylko mam mały problem, a mianowicie jak w tym skrypcie pobrać kilka zdjęć z bazy i później je wyświetlić?

zrobiłem tak: (pokazuje różne id_certyfikatu ale zdjęcie to samo)
  1. <?php
  2. include("posiadane_certyfikaty.php");
  3. include("mysql_connect.php");
  4. $zapytanie= mysql_query ("SELECT * FROM $mysql_tabela ORDER BY id_certyfikatu DESC") or 
  5. die ("Błąd w zapytaniu");
  6. while ($rekord = mysql_fetch_array ($zapytanie)) {
  7. $id_certyfikatu = $rekord[0];
  8. $zdjecie = $rekord[1];
  9. $typ = $rekord[2];
  10. $nazwa = $rekord[3];
  11. $rozmiar = $rekord[4];
  12. ?>
  13. <tr>
  14. <td class="n"><font color="#666666">certyfikat:</font></td>
  15. <td class="n"><img src="zdjecie.php"></td>
  16. </tr>
  17. <?php
  18. }
  19. ?>


zdjęcie.php
  1. <?php
  2. include("posiadane_certyfikaty.php");
  3. include("mysql_connect.php");
  4. $zapytanie= mysql_query ("SELECT zdjecie,typ FROM $mysql_tabela") or
  5. die ("Błąd w zapytaniu !");
  6. $row = mysql_fetch_assoc($zapytanie);
  7. $grafika=$row['zdjecie'];
  8. $typpliku=$row['typ'];
  9. header("Content-type:$typpliku");
  10. print $grafika;
  11. ?>


potrzebuje pomocy
krowal
Musisz to robić za każdym razem oddzielnie. Czyli taki zapis:
  1. <img src="zdjecie.php?id=1" />
  2. <img src="zdjecie.php?id=2" />
  3. ...

a potem w skrypcie wybierasz z bazy odpowiednie zdjęcie i wyrzucasz do przeglądarki wynik poprzedzając odpowiednim nagłówkiem. Ewentualnie można wybrane z bazy zdjęcia połączyć w jedną całość jeszcze na poziomie PHP a potem w html wywołać jako jedno duże zdjęcie, ale chyba nie o to Ci chodziło.
LBO
Zacznijmy od tego, że takie coś mija się z celem.

Trzymaj w bazie co najwyżej ścieżki do zdjęć, a zdjęcia normalnie na serwerze. Na pewno nie będziesz miał potem takich problemów.
krowal
Cytat(LBO @ 20.11.2007, 19:43:51 ) *
Zacznijmy od tego, że takie coś mija się z celem.


Wcale się z celem nie mija, wyobraź sobie sytuację gdy chce się zabezpieczyć zdjęcia przed kopiowaniem nakładając na nie znak wodny (przynajmniej na te największe). Najlepiej wtedy zablokować bezpośredni dostęp do zdjęć przez HTTP i wypuszczać je przez jakiś skrypt nakładający zabezpieczenie. Zależy co chce się osiągnąć smile.gif
KOMPsognat
Mając pliki na serwerze wystarczy, że zablokujesz dostęp do folderu z nimi (.htaccess) a już nikt niepowołany się do nich nie dostanie.
LBO
A nie możesz zdjęc obrobić np po uploadzie, albo, jakimś skryptem obrobić masowo? Uwierz mi, czymś takim można zajechać bazę.
cicik
Cytat(LBO @ 20.11.2007, 19:43:51 ) *
Zacznijmy od tego, że takie coś mija się z celem.


Nie zgodzę się. Jeśli ma się wydajny serwer to jak najbardziej jest w tym sens.
Wyobraź sobie, że trzymasz w bazie tylko ścieżki, a zdjęcia na serwerze. Usuwając rekord z bazy nie masz gwarancji, że usunie się zdjęcie z dysku i odwrotnie (tranzakcyjność). Coś się może popsuć pomiędzy tymi dwiema operacjami itd. Jednym słowem nie ma gwarancji zachowania spójności danych. Jeśli zdjęcie masz w bazie to albo usunie się wszystko albo nic.

Jest to mniej wydajne ale coś za coś. W MS SQL Server 2008 jest typ pola FILE. Niby wrzucasz plik do bazy ale w rzeczywistości jest on trzymany w folderze, a w bazie jest tylko link. Ale zrobili to mądrze. Czyli plik ma nadawane odpowiednie uprawnienia przez co nikt normalnie go nie usunie i nie zmodyfikuje. Również tranzakcyjność jest zachowana. Albo zostanie usunięty i plik i informacja z bazy albo ani jedno ani drugie. MySQLe i PostgreSQLe jeszcze tak fajnie nie mają.
lectric
Cytat(cicik @ 21.11.2007, 09:51:37 ) *
Nie zgodzę się. Jeśli ma się wydajny serwer to jak najbardziej jest w tym sens.
Wyobraź sobie, że trzymasz w bazie tylko ścieżki, a zdjęcia na serwerze. Usuwając rekord z bazy nie masz gwarancji, że usunie się zdjęcie z dysku i odwrotnie (tranzakcyjność). Coś się może popsuć pomiędzy tymi dwiema operacjami itd. Jednym słowem nie ma gwarancji zachowania spójności danych. Jeśli zdjęcie masz w bazie to albo usunie się wszystko albo nic..


Głupota, uzależniasz akcje od siebie + podwójna kontrola akcji i jest ok.
LBO
Cytat(cicik @ 21.11.2007, 09:51:37 ) *
MySQLe i PostgreSQLe jeszcze tak fajnie nie mają.


I teraz odpowiedz Sobie na pytanie dlaczego MS SQL rozwiązał to tak, a nie inaczej? Hmmm?
mitp
czesc, cholercia nie miałem dostepu do neta i nie moglem nic zrobic ... panowie nie działa, a czas mnie strasznie nagli, pomozcie ... zrobiłem tak:
zdjecie.php
  1. <?php
  2. $zapytanie= mysql_query ("SELECT zdjecie,typ FROM $mysql_tabela") or
  3. die ("Błąd w zapytaniu !");
  4. $row = mysql_fetch_assoc($zapytanie);
  5. $grafika=$row['zdjecie'];
  6. $typpliku=$row['typ'];
  7. header("Content-type:$typpliku");
  8. print $grafika;
  9. ?>

index.php
  1. <?php
  2. include("posiadane_certyfikaty.php");
  3. include("mysql_connect.php");
  4. $zapytanie= mysql_query ("SELECT * FROM $mysql_tabela ORDER BY id_certyfikatu DESC") or 
  5. die ("Błąd w zapytaniu");
  6. while ($rekord = mysql_fetch_array ($zapytanie)) {
  7. $id_certyfikatu = $rekord[0];
  8. $zdjecie = $rekord[1];
  9. $typ = $rekord[2];
  10. $nazwa = $rekord[3];
  11. $rozmiar = $rekord[4];
  12. ?>
  13. <tr>
  14. <td class="n"><font color="#666666">certyfikat:</font></td>
  15. <td class="n"><?php print"<img src=\"zdjecie.php?id_certyfikatu=$id_certyfikatu\">"; ?></td>
  16. </tr>
  17. <tr>
  18. <td class="n">&nbsp;</td>
  19. </tr>
  20. <tr>
  21. <td class="n" colspan="2">
  22. <?php echo"<a href=edycja_strony_certyfikaty_usun_certyfikat_zapytanie.php?id_certyfikatu=$id_certyfikatu>
  23. <font color=\"#D01B06\">Usuń certyfikat</font></a>"; ?></td>
  24. </tr>
  25. <?php } ?>


problem w tym, że nadal wyświetla ten sam obrazek dla 2 roznych id, jak klikne usun to jest ok odrownia pola w bazie, ale grafika zawsze jedna, jak to poprawic?
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.