Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]jak wyświetlić zdjęcie z pola BLOB
Paweltm
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


Tak jak w temacie.
Mam zdjęcie w bazie mysql w polu BLOB. Chciałbym się dowiedzieć jak mogę go wywołać z bazy i wyświetlić w formie obrazka.
wywołując plik
  1. ".$row['zdjecie1']."
wyświetlają mi się krzaczki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Bo tak zdjęcie jest zapisane w bazie smile.gif Musisz poinformować stronę, że ma do czynienia ze zdjęciem a nie tekstem. Poczytaj o header.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Paweltm
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


wpisując to w <img src= > również były krzaczki
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie możesz tak zrobić! Zobacz na przykłady w manualu dla header! Najlepiej utwórz osobny skrypt php, który wyświetla dane z bazy. przykładowo masz zdjęcie w bazie pod rekordem o id=5
wywołujesz więc zdjęcie tak:
  1. <img src="obraz.php?id=5">

zaś plik obraz.php ma wygląd:
  1. <?php
  2. //tu walidacja id
  3. //ustawienie nagłówków za pomocą header
  4. //tu pobranie z bazy $row['zdjecie1'] i wyświetlenie
  5. ?>


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Paweltm
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


nie bardzo rozumiem o co chodzi z tym ustawieniem header...

zrobiłem tak :

  1. <img src='obraz.php?id=".$row['id_product']."'>


i obraz.php

  1. $id = $_GET['id'];
  2.  
  3. $query = mysql_query("SELECT * FROM product WHERE id_product = '$id'");
  4. while($row = mysql_fetch_array($query)) {
  5. echo "$row['zdjecie1']";
  6. }

wyświetla mi się obrazek mówiący o niezaładowaniu obrazka a w bazie w tym polu jest [BLOB - 32,1KB]
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




1) Nie zapisujemy zawartości zdjęcia w bazie tylko ścieżke do pliku
2) To co masz teraz jest bardzo niewydajne
3)
  1. header('Content-type: image/jpeg'); // o ile to jest JPG. Dla innych formatów są analogiczne "mimetype". Wystarczy poszukać.
  2. echo $row['zdjecie1'];


--------------------
Go to the top of the page
+Quote Post
Paweltm
post
Post #7





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


dodawanie obrazka :
  1. $plik1_tmp = $_FILES['zdjecie1']['tmp_name'];
  2. $plik1_nazwa = $_FILES['zdjecie1']['name'];
  3. $plik1_rozmiar = $_FILES['zdjecie1']['size'];
  4. $plik1_typ = $_FILES['zdjecie1']['type'];
  5.  
  6.  
  7.  
  8. $sp1 = explode(".",$plik1_nazwa);
  9.  
  10.  
  11. $obraz1 = addslashes(fread(fopen($plik1_tmp, "r"), $plik1_rozmiar));
  12.  
  13.  
  14. if(($sp1[1] == "jpg" or $sp1[1] == "gif" or $sp1[1] == "bmp"
  15. or $sp1[1] == "png") and (is_uploaded_file($plik1_tmp)))
  16.  
  17. {
  18. move_uploaded_file($plik1_tmp, "upload/$plik1_nazwa");
  19. echo "Plik: <strong>$plik1_nazwa</strong> został przesłany na serwer!";
  20. }
  21. else
  22. {
  23. echo "Nie udało się wysłać pliku <strong>$plik1_nazwa</strong> na
  24. serwer Format lub rozmiar nie poprawny";
  25. }
  26.  
  27.  
  28. $zapytanie="INSERT INTO product (nazwa_kat, nazwa, opis, ilosc, cena, param, zdjecie1) VALUES('$nazwa_kat','$nazwa','$opis','$ilosc','$cena','$param','$obraz1')";
  29.  
  30. mysql_query($zapytanie) or die("Wystapil blad" );


W bazie są wpisy jednak w kat upload nie ma nic.
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tzn, że masz coś skaszanione. Włacz pełne raportowanie błędów ( Temat: Jak poprawnie zadac pytanie ) i sprawdź dokładnie skrypt.


--------------------
Go to the top of the page
+Quote Post
Paweltm
post
Post #9





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


mój błąd. Wysyła pliki prawidłowo.
Jednak katalog niżej.

Jednak i tak ich nie wyświetla...

Ten post edytował Paweltm 19.01.2011, 11:37:58
Go to the top of the page
+Quote Post
thek
post
Post #10





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zabrakło w Twoim skrypcie header, czyli to co dodał Wookieb. Swoją drogą zabezpieczaj skrypt choć trochę... Zrobi Ci ktoś w $_GET['id'] sql_injection i masz po bazie...

W innych punktach też Wookieb ma rację. Przechowywanie obrazków w bazie jest bardzo niewydajne. Tam powinna być tylko ścieżka do pliku w strukturze Twojego serwisu lub sama nazwa pliku, gdy ścieżka jest przez skrypt wpisana na sztywno i stała lub prosta do wygenerowania przez niego z innych danych.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Posprawdzaj wszystkie ścieżki getcwd i upewnij się, że na pewno nic w tym katalogu nie ma. Poza tym popraw tabele i wstawiaj ścieżki do plików.


--------------------
Go to the top of the page
+Quote Post
Paweltm
post
Post #12





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


Cytat(thek @ 19.01.2011, 11:38:13 ) *
Zabrakło w Twoim skrypcie header, czyli to co dodał Wookieb. Swoją drogą zabezpieczaj skrypt choć trochę... Zrobi Ci ktoś w $_GET['id'] sql_injection i masz po bazie...

W innych punktach też Wookieb ma rację. Przechowywanie obrazków w bazie jest bardzo niewydajne. Tam powinna być tylko ścieżka do pliku w strukturze Twojego serwisu lub sama nazwa pliku, gdy ścieżka jest przez skrypt wpisana na sztywno i stała lub prosta do wygenerowania przez niego z innych danych.



dodałem ten header jednak dalej nie wyświetla. Skrypt jest robiony na bardzo szybko i na odwal się smile.gif i ma działać właśćiwie tylko kilka dni:)
plik w bazie jest, jest też na serwerze jednak nie wyświetla się cały czas...
http://www.pawelkwapisz.trh.com.pl/sklep/p....php?produkt=sd
Go to the top of the page
+Quote Post
wookieb
post
Post #13





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




ale ty już nie masz robic adresu do zdjęcia w takiej formie jak teraz tylko
Kod
      <img src="/upload/nazwa_obrazka.jpg" alt="">


POZA TYM http://www.pawelkwapisz.trh.com.pl/sklep/obraz.php?id=1
No ludzie, sprawdźcie co robicie. Nikt was za rączkę cały czas nie będzie prowadził...
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
Paweltm
post
Post #14





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 4.07.2007

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


tak jest zrobione:

  1. <img src='obraz.php?id=".$row['id_product']."'>


i obraz.php

  1. $id = $_GET['id'];
  2.  
  3. $query = mysql_query("SELECT * FROM product WHERE id_product = '$id'");
  4. header('Content-type: image/jpeg');
  5.  
  6. while($row = mysql_fetch_array($query)) {
  7.  
  8. echo "$row['zdjecie1']";



A w bazie przy id=1
1 pierwsza sd sadasdasdasd 22 213 232 [BLOB - 32,1KB]


Wywala się w linii :

echo "$row['zdjecie1']";

jak powinno wyglądać to wyświetlenie?

Ten post edytował Paweltm 19.01.2011, 11:55:37
Go to the top of the page
+Quote Post
adrianozo
post
Post #15





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


echo $row['zdjecie1'];

Nie wystarczy tak?

Skoro Ci sypie błędem to może powiesz jakim?


--------------------
Go to the top of the page
+Quote Post
robzio
post
Post #16





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 14.08.2015

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


Witam
Może ktoś będzie wiedział
dlaczego się tak dzieje??




<H1>Baza Częsci</H1>

<TABLE border="1">

<?php

$nazwabazydanych = "foto";

$link = mysqli_connect("localhost", "root", "")
or die("BَD: nie można się poł&plusmn;czyć z serverem mySQL");

$db=mysqli_select_db($link,$nazwabazydanych)
or die("BَD: wybór bazy danych");

$result = mysqli_query($link,'SELECT id, tytul FROM obrazy');
while ($wiersz = mysqli_fetch_array($result)) {
?>

<TR>
<TD align="center">
<A href="obraz.php?nr=<?php echo $wiersz['id']; ?>">
<IMG src="miniobraz.php?nr=<?php echo $wiersz['id']; ?>"
alt="<?php echo $wiersz['tytul']; ?>"></A>

</TD>
<TD><?php echo $wiersz['tytul']; ?></TD>
</TR>

<?php
}//while

mysqli_close($link);
?>

</TABLE>
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: 22.08.2025 - 03:16