Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]bledy w wyswietlaniu zdjec z bazy mysql
ukaszq
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Mam mysqla 5 i php 5.
Stworzylem tabele dalem jej mediumblob dla zdjec.
Po czym chce wyswietlac te zdjecia ktore zaladuje to wyswietla mi dwie strony krzaczków, nie widze zadnego zdjecia.

Mam taki skrypcik do wyswietlania fotek:
  1. <?php
  2. $result = mysql_query("SELECT zdjecie FROM fotki WHERE id='3'");
  3.  
  4. if (mysql_num_rows($result) != 0)
  5. {
  6. $row = mysql_fetch_array($result);
  7. echo base64_decode($row['zdjecie']);
  8. }
  9. ?>


Mam oczywiscie na poczatku:
  1. <?php
  2. header("Content-type: image/jpg;");
  3. ?>

ale wyrzuca mi taki blad:
Warning: Cannot modify header information - headers already sent by (output started at /admin/sehen.php:3) in /admin/sehen.php on line 6

Ten post edytował Cysiaczek 25.12.2007, 20:58:58
Powód edycji: dodalem tag (cysiaczek)
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #2





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Wyrzuca Tobie błąd ponieważ masz już wysłane nagłówki. Umieść header() gdzieś na początku swojego skryptu tzn (pierwsza linijka po rozpoczęciu kodu):

  1. <?php
  2. header("Content-type: image/jpg;");
  3. //cała reszta kodu
  4. ?>


Pamiętaj, że wylanie nagłówków musi być przed jakimkolwiek wygenerowaniem html (znacznikami html'owymi - najlepiej).

BTW: możesz pokazać sehen.php ? lub 3 i 6 linijkę ?
Go to the top of the page
+Quote Post
ukaszq
post
Post #3





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Zrobilem tak jak mowisz... i poszlo, dzieki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Zawsze mozesz dac ob_start i wtedy dajesz header gdzie chcesz
Go to the top of the page
+Quote Post
ukaszq
post
Post #5





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Chyba za bardzo sie pochwalilem. Nie chodzi mi nadal. Był moment kiedy chodzilo, ale to wtedy kiedy usunalem caly kod html i wrzucilem sam kod php. Nie usunalem wtedy otwartej wczesniej strony w html tylko odswiezylem sam skrypt php i wtedy zobaczylem zdjecie.

Nie umiem sobie jakos z tym poradzic.
Oto caly moj skrypt w pliku sehen.php:

  1. <html>
  2. <body>
  3. <?
  4. header("Content-type: image/jpg;");
  5. $connect=mysql_connect("localhost", "xxx", "xxx") or die("Nie mozna polaczyc sie z baza danych.");
  6. $baza=mysql_select_db("xxx", $connect) or die("Baza danych nie istnieje");
  7.  
  8. $result = mysql_query("SELECT zdjecie FROM fotki WHERE id='3'");
  9.  
  10. if (mysql_num_rows($result) != 0)
  11. {
  12. $row = mysql_fetch_array($result);
  13. echo base64_decode($row['zdjecie']);
  14. }
  15.  
  16.  
  17.  
  18.  
  19. ?>
  20.  
  21.  
  22. </body>
  23. </html>


I znowu wysiwtelaja sie bledy i krzaczki... to samo co wyzej...
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #6





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Mówiłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zrób tak:
  1. <?php
  2. header("Content-type: image/jpg;");
  3.  
  4. echo "<html>
  5. <body>";
  6.  
  7. $connect=mysql_connect("localhost", "xxx", "xxx") or die("Nie mozna polaczyc sie z baza danych.");
  8. $baza=mysql_select_db("xxx", $connect) or die("Baza danych nie istnieje");
  9.  
  10. $result = mysql_query("SELECT zdjecie FROM fotki WHERE id='3'");
  11.  
  12. if (mysql_num_rows($result) != 0)
  13. {
  14. $row = mysql_fetch_array($result);
  15. echo base64_decode($row['zdjecie']);
  16. }
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. </body>
  24. </html>";
  25. ?>


Jeśli dajesz ob_start() to dajesz również przez znacznikami html'owymi, a skoro chcesz dać ob_start() na początek to musisz pamiętać aby na końcu umieścić ob_end_flush().

Ten post edytował sniezny_wilk 26.12.2007, 11:48:38
Go to the top of the page
+Quote Post
ukaszq
post
Post #7





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Zrobilem tak jak napisales. Ale ciagle sa krzaczki... nie wyswielta mi zdjecia.
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #8





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Dobra, to może pora szukać błędu gdzie indziej. Ja zrobiłem tak, wciągnąłem obrazek do bazy tak

  1. <?php
  2. $obrazek = file_get_contents("http://www.adresdoobrazka.pl/obrazek.jpg");
  3. //i potem do bazy która ma pole jako TEXT ustawione wrzuciłem wartość zmiennej $ob
    razek
  4. ?>


i wyrzucam to z bazy bez żadnego base64. Jeśli wyświetlasz obrazek nie dawaj znaczników html ! sam czysty PHP
Go to the top of the page
+Quote Post
marcio
post
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Ogolnie zapomnialo mi sie dodac ze na koncu powinno sie dac ob_end_flush lecz jednak nie jest to przymusowe dziala i bez lecz do poprawnego dzialania lepiej dodac
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #10





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Może Ty chcesz wyświetlić ten obrazek w html'u ?

Wtedy robisz dwa skrypty jeden ten który ładuje obrazek z bazy np. obrazek.php i tam już bez znaczników html, czysty PHP, tylko z tym header. Potem jak chcesz wykorzystać ten obrazek piszesz sobie normalnie kod html'owy i wrzucasz obrazek w którym src podajesz jako ścieżkę do skryptu np.

  1. </head>
  2. <img src="obrazek.php" alt="obrazek z PHP"/>
  3. </body>
  4. </html>


i będzie obrazek.
Go to the top of the page
+Quote Post
ukaszq
post
Post #11





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Jest tak. Mam plik sehen.php i chce kiedy wlacze ten plik w przegladarce aby wyswietlilo mi sie zdjecie. A pokazuja mi sie krzaczki i wyskakuje mi blad z headerem... Juz nie wiem co jest grane...
Prosze o pomoc...

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Untitled Document</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <?
  11. header("Content-type: image/jpg;");
  12. $connect=mysql_connect("localhost", "xxx", "xxx") or die("Nie mozna polaczyc sie z baza danych.");
  13. $baza=mysql_select_db("xxx", $connect) or die("Baza danych nie istnieje");
  14.  
  15. $result = mysql_query("SELECT zdjecie FROM fotki WHERE id='3'");
  16.  
  17. if (mysql_num_rows($result) != 0)
  18. {
  19. $row = mysql_fetch_array($result);
  20. echo base64_decode($row['zdjecie']);
  21. }
  22.  
  23.  
  24.  
  25.  
  26. ?>
  27. </body>
  28. </html>


Ten post edytował ukaszq 26.12.2007, 18:58:37
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #12





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Jeśli chcesz otwierać sam obraz to po co Tobie html ? (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) Zdjęcie to zdjęcie, nie potrzebuje otoczki html'owej. Otwórz obojętnie jaki obraz w przeglądarce a zobaczysz, że nie da się zrobić podglądu źródła, lub źródła nie ma. Powiedz jaki efekt chcesz uzyskać - jeśli chcesz wyświetlić samo zdjęcie bez tekstu to nie dawaj znaczników html'owych, jeśli chcesz zdjęcie wstawić do html'a to zrób tak jak napisałem powyżej czyli

  1. <?php
  2. header("Content-type: image/jpg;");
  3. $connect=mysql_connect("localhost", "xxx", "xxx") or die("Nie mozna polaczyc sie z baza danych.");
  4. $baza=mysql_select_db("xxx", $connect) or die("Baza danych nie istnieje");
  5.  
  6. $result = mysql_query("SELECT zdjecie FROM fotki WHERE id='3'");
  7.  
  8. if (mysql_num_rows($result) != 0)
  9. {
  10. $row = mysql_fetch_array($result);
  11. echo base64_decode($row['zdjecie']);
  12. }
  13.  
  14.  
  15.  
  16.  
  17. ?>


a potem w html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. </head>
  6.  
  7. <img src="sehen.php" alt="obrazek z PHP"/>
  8. </body>
  9. </html>


pliki sehen.php i ten html, muszą być w tym samym katalogu. Działa ?
Go to the top of the page
+Quote Post
marcio
post
Post #13





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Mi jedyne pytanie jakie mi sie nasuwa to jest czy zdjecie to napewno jpg
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #14





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Cytat(marcio @ 26.12.2007, 19:11:24 ) *
Mi jedyne pytanie jakie mi sie nasuwa to jest czy zdjecie to napewno jpg


Bez różnicy, ja miałem np, obrazek GIF i z headerem JPG normalnie wyświetlało, bez żadnych problemów. Chodzi tylko o info, że to obrazek jest.
Go to the top of the page
+Quote Post
marcio
post
Post #15





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


obrazkami,header'em i funckja dotyczacych obrazkow malo znam ale wedlug mnie moze to zle chodzic jesli obrazek jest gif przeciez sa to inne typy,
To takjakby do zmiennej string'a dac int i tez program sie wysypie
Go to the top of the page
+Quote Post
ukaszq
post
Post #16





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (10%)
X----


Cytat(sniezny_wilk @ 26.12.2007, 19:04:43 ) *
Jeśli chcesz otwierać sam obraz to po co Tobie html ? (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) Zdjęcie to zdjęcie, nie potrzebuje otoczki html'owej. Otwórz obojętnie jaki obraz w przeglądarce a zobaczysz, że nie da się zrobić podglądu źródła, lub źródła nie ma. Powiedz jaki efekt chcesz uzyskać - jeśli chcesz wyświetlić samo zdjęcie bez tekstu to nie dawaj znaczników html'owych, jeśli chcesz zdjęcie wstawić do html'a to zrób tak jak napisałem powyżej czyli

  1. <?php
  2. header("Content-type: image/jpg;");
  3. $connect=mysql_connect("localhost", "xxx", "xxx") or die("Nie mozna polaczyc sie z baza danych.");
  4. $baza=mysql_select_db("xxx", $connect) or die("Baza danych nie istnieje");
  5.  
  6. $result = mysql_query("SELECT zdjecie FROM fotki WHERE id='3'");
  7.  
  8. if (mysql_num_rows($result) != 0)
  9. {
  10. $row = mysql_fetch_array($result);
  11. echo base64_decode($row['zdjecie']);
  12. }
  13.  
  14.  
  15.  
  16.  
  17. ?>


a potem w html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. </head>
  6.  
  7. <img src="sehen.php" alt="obrazek z PHP"/>
  8. </body>
  9. </html>


pliki sehen.php i ten html, muszą być w tym samym katalogu. Działa ?



Zadziało! Dziekuje Ci za pomoc. Choc wczesniej tak probowalem i nie chodzilo. Napewno robilem jakis blad.
Ale jeszcze raz dzieki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #17





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Cytat(marcio @ 26.12.2007, 19:35:25 ) *
obrazkami,header'em i funckja dotyczacych obrazkow malo znam ale wedlug mnie moze to zle chodzic jesli obrazek jest gif przeciez sa to inne typy,
To takjakby do zmiennej string'a dac int i tez program sie wysypie


Nie wiem jakie to ma minusy, że jest header JPG, ale zrób test, wciągnij obrazek GIF za pomocą file_get_contents(), a następnie wyświetl zawartość z headerem JPG.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 18:53