Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Pobranie zdjęć, foto, obrazów z bazy danych, Foto, obrazy, fotki, zdjęcia, jpg z bazy danych
8_pasazer_NOSTRO...
post 7.04.2011, 13:04:27
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


Witam

Panowie powiedzcie jak pobrać i wyświetlić pliki jpg (zdjęcia np.) na nowej stronie, jedno pod drugim. Mam bazę danych gdzie ludzie wrzucają różne fotki. Do każdego id może być max 6 zdjęć w kolumnach foto1,foto2,foto3,foto4,foto5,foto6. Typ - MEDIUMBLOB.

Gdy mam takie coś :
  1. <?php
  2. $_id = $_GET['id'];
  3. header("Content-type: image/jpg;");
  4. include "../../baza.php";
  5.  
  6. $wynik = mysql_query("SELECT foto1 FROM wstep_wp WHERE id='$_id'");
  7. $foto = mysql_fetch_assoc($wynik);
  8. print base64_decode($foto['foto1']);
  9.  
  10. $wynik = mysql_query("SELECT foto2 FROM wstep_wp WHERE id='$_id'");
  11. $foto = mysql_fetch_assoc($wynik);
  12. print base64_decode($foto['foto2']);
  13.  
  14. ?>


Problem polega na tym, że zawsze wyświetla ten który jest jako pierwszy pobrany (w tym przykładzie foto1). Co zrobić by pokazywał pod foto1 również foto2 i tak aż do foto6.

Chodzi mi dokładnie o samo wyświetlenie obrazków na nowej stronie jeden po drugim. ID maja takie samo.

Ten post edytował 8_pasazer_NOSTROMO 7.04.2011, 13:28:31
Go to the top of the page
+Quote Post
Turson
post 7.04.2011, 13:31:29
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Niepotrzebnie wykonujesz każde polecenie osobno, możesz pobrać wszystkie dane w jednym zapytaniu
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 7.04.2011, 13:53:06
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


Próbowałem i tak:
  1. $wynik = mysql_query("SELECT foto1,foto2 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto1']);
  4. print base64_decode($foto['foto2']);



Nadal pokazywało tylko pierwszy. Tak jakby na stronie można było wyświetlić tylko 1 plik. Dziwne to. Kto pomoże.

Ten post edytował 8_pasazer_NOSTROMO 7.04.2011, 13:54:13
Go to the top of the page
+Quote Post
wookieb
post 7.04.2011, 13:56:30
Post #4





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




Cytat(8_pasazer_NOSTROMO @ 7.04.2011, 14:53:06 ) *
Tak jakby na stronie można było wyświetlić tylko 1 plik.

No bo to tak właśnie działa.

Masz 2 opcje:
1) Łączyć zdjęcia w jedno za pomocą GD albo Imagick (nie polecam)
2)
  1. <img src="zdjecie.php?id=id&numer_zdjecia=1" />
  2. <img src="zdjecie.php?id=id&numer_zdjecia=2" />

itd.


--------------------
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 8.04.2011, 08:38:09
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


Ma ktoś jeszcze jakiś pomysł. GD nie jest obsługiwane na moim serwerze a nie jestem zarządcą jego. Drugi sposób jakoś też nie działa, chyba że źle coś robię.
Go to the top of the page
+Quote Post
kadlub
post 8.04.2011, 08:44:45
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


a nie możesz tego wyświetlić pętlą while było sporo postów na ten temat

albo tak jak pobierasz tylko jeden rekord
  1. $wynik = mysql_query("SELECT * FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto1']);
  4. print base64_decode($foto['foto2']);
  5. print base64_decode($foto['foto3']);

i tak dalej

Ten post edytował kadlub 8.04.2011, 08:49:17
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 8.04.2011, 09:17:57
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


W pętli też wyświetla pierwszy a drugiego nie. Jakby pętla stawała zaraz po pierwszym.
Go to the top of the page
+Quote Post
ToAr
post 8.04.2011, 09:45:38
Post #8





Grupa: Zarejestrowani
Postów: 49
Pomógł: 18
Dołączył: 7.04.2011
Skąd: Toruń

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


  1. $wynik = mysql_query("SELECT * FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_row($wynik);
  3. print base64_decode($foto['foto1']);
  4. print base64_decode($foto['foto2']);


pokaż też strukturę tej tabeli
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 8.04.2011, 10:05:15
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


  1. $wynik = mysql_query("SELECT * FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_row($wynik);
  3. print base64_decode($foto['foto1']);
  4. print base64_decode($foto['foto2']);


Obrazek zawiera błędy. Gdy zamiast $foto = mysql_fetch_row($wynik); damy $foto = mysql_fetch_array($wynik); lub $foto = mysql_fetch_assoc($wynik); to pokazuje tylko pierwszy. Po pierwszym od razu skrypt kończy bieg.

Struktura tabeli
Pole Typ
id int 3
dane text
data date
analiza char 3
foto1 mediumblob
foto2 mediumblob
foto3 mediumblob
foto4 mediumblob
foto5 mediumblob
foto6 mediumblob


Wszystko działa fajnie, wysyłanie do bazy, odczyt itp. Ale pokazuje zawsze pierwszy przy próbie ich wywołania. Chciałbym pod 1 linkiem wypisać wszystkie foty dla danego ID, nie tworzyć 6 linków do każdej foty osobno.
Go to the top of the page
+Quote Post
ToAr
post 8.04.2011, 10:08:34
Post #10





Grupa: Zarejestrowani
Postów: 49
Pomógł: 18
Dołączył: 7.04.2011
Skąd: Toruń

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


a wyświetlanie błędów masz włączone?

  1. ini_set('display_errors', '1');
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 8.04.2011, 10:48:51
Post #11





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


Problem w tym, że działa ale tylko jeden.
Tak działa :
  1. $wynik = mysql_query("SELECT foto1,foto2 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto1']);


Tak działa, ale pokazuje pierwszy tylko

  1. $wynik = mysql_query("SELECT foto1,foto2 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto1']);
  4. print base64_decode($foto['foto2']);


Pętlowanie nic nie daje, nadal jeden stoi twardo niczym mina Mourinho przed Grand Derby.
Go to the top of the page
+Quote Post
ToAr
post 8.04.2011, 11:08:56
Post #12





Grupa: Zarejestrowani
Postów: 49
Pomógł: 18
Dołączył: 7.04.2011
Skąd: Toruń

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


a tak działa?

  1. $wynik = mysql_query("SELECT foto1,foto2 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto2']);


czy masz dobrze zakodowane te obrazki?

i czy w skrypcie masz włączone wyświetlanie błędów?
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 8.04.2011, 11:32:42
Post #13





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


  1. $wynik = mysql_query("SELECT foto1,foto2 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto2']);


Tak działa, wyświetla fotke z drugiego pola. Wyświetlanie błędów jest włączone.

  1. $wynik = mysql_query("SELECT foto1,foto2,foto3,foto4,foto5,foto6 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto6']);


Tak też działa. Problem jest wtedy gdy chce wyświetlic wiecej niż jedną fotke. Wtedy zawsze pokazuje tylko tą, która jest wypisana jako pierwsza w kodzie. Jeśli bedzie:
  1. $wynik = mysql_query("SELECT foto1,foto2,foto3,foto4,foto5,foto6 FROM wstep_wp WHERE id='$_id'");
  2. $foto = mysql_fetch_assoc($wynik);
  3. print base64_decode($foto['foto6']);
  4. print base64_decode($foto['foto5']);
  5. print base64_decode($foto['foto4']);
  6. print base64_decode($foto['foto3']);
  7. print base64_decode($foto['foto2']);
  8. print base64_decode($foto['foto1']);


To wyświetla foto6 a innych nie widzi. Błędów żadnych chyba nie ma. Bo wypisując każdą fotkę w osobnym linku to działają wszystkie. 6 fotek = 6 linków. W każdym linku jedna fotka. Wtedy działa. Chciałbym w jednym linku wypisać 6 fotek (dla jednego rozboju - 6 podejrzanych, jeden pod drugim)

Ten post edytował 8_pasazer_NOSTROMO 8.04.2011, 11:35:15
Go to the top of the page
+Quote Post
kadlub
post 8.04.2011, 11:50:44
Post #14





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


to np masz w jakimś tam pliku zdjecie.php
  1. $img=$_GET['nr'];
  2. $wynik = mysql_query("SELECT * FROM wstep_wp WHERE id='$_id'");
  3. $foto = mysql_fetch_assoc($wynik);
  4. print base64_decode($foto[$img]);


a w innym pliku np pokarz.php
zrób
<img src="zdjecie.php?nr=foto1" />
<img src="zdjecie.php?nr=foto2" />
<img src="zdjecie.php?nr=foto3" />

Ten post edytował kadlub 8.04.2011, 11:55:36
Go to the top of the page
+Quote Post
wookieb
post 8.04.2011, 11:50:58
Post #15





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




Cytat(8_pasazer_NOSTROMO @ 8.04.2011, 12:32:42 ) *
W każdym linku jedna fotka. Wtedy działa. Chciałbym w jednym linku wypisać 6 fotek (dla jednego rozboju - 6 podejrzanych, jeden pod drugim)

Ile razy trzeba Ci powtarzać, że musisz je złączyć w GD albo IMagicku ?
Jak nie masz do nich dostępu to nic nie zrobisz. Koniec kropka.


--------------------
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 8.04.2011, 12:17:48
Post #16





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

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


@ wookieb

Liczyłem, że może ktoś potrafi, no ale skoro jesteś pewien w 100% to poddaje się niczym Ronaldo w Grand Derby (jesień 2011).
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 Wersja Lo-Fi Aktualny czas: 13.07.2025 - 02:57