Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wydobywanie zdjec [BLOB]
źrebak
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


Cala baza
danych dotyczy ofert nieruchomosci. Chcialbym, zeby po kliknieciu na
link przy danej ofercie pt. "Zobacz zdjecia" otwierala sie mala
galeria ze zdjeciami. I tak, przesylam jako parametr sygnature danej
oferty do pliku wykonywujacego .php (np.foto.php) i tam konstruuje
zapytanie do bazy o wyswietlenie mi wszystkich rekordow dla ktorych
sygnatura="X". Baza bez problemow realizuje moje zapytanie, wskutek
czego dostaje taki mniej wiecej obraz:

SYGNATURA | UNIKAT | FOTO |
-------------------------------------
PSK001 | p0000000001 | BLOB |
PSK001 | p0000000002 | BLOB |
itd....


W jaki sposob mam stworzyc nastepne zapytanie stosujac odpowiednie
naglowki tak by moc wyswietlic interesujaca mnie mala galeryjke
zdjec dotyczacych w/w oferty o zadanej sygnaturze?

SYGNATURA - to nr oferty
UNIKAT - to numer/oznaczenie zdjecia
FOTO - dane binarne

Ten post edytował źrebak 4.05.2005, 11:01:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Nosfi
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 13.10.2004
Skąd: Świnoujście

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


Jeśli dobrze zrozumiałem ...

w bazie zapisywane są rekordy dotyczące każdej oferty, rekordów jest tyle ile zdjęć ... (jeśli źle rozumuje to poproszę więcej szczegółów)

i teraz ... po 1. w końcu ta baza będzie ciężka ... nie lepiej zapisać informacje o zdjęciach w jednym rekordzie w postaci np. BLOB;BLOB;BLOB ... ?

następnie wyciągając jeden rekord o danej unikatowej sygnaturze dla danej oferty uzyskasz wszystko co potrzebujesz ...

przykład:

  1. <?php
  2.  
  3. $q = &#092;"SELECT fotki FROM oferty WHERE id = 'SYGNATURA'\";
  4. $r = mysql_db_query($baza,$q);
  5. $row = mysql_fetch_array($r);
  6.  
  7. $fotki = split(&#092;";\",$row[\"fotki\"]);
  8.  
  9. for($i=0; $i<=sizeof($fotki); $i++){
  10. echo '<img src=\"' . $fotki[$i] . '\"><br>';
  11. }
  12.  
  13. ?>


natomiast biorąc twój sposób (jeśli dobrze zrozumiałem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ):

  1. <?php
  2.  
  3. $q = &#092;"SELECT fotki FROM oferty WHERE id = 'SYGNATURA'\";
  4. $r = mysql_db_query($baza,$q);
  5.  
  6. $tab_foto = array();
  7. while($row = mysql_fetch_array($r)){
  8. $tab_foto[] = $row[&#092;"fotki\"];
  9. }
  10.  
  11. for($i=0; $i<=sizeof($tab_foto); $i++){
  12. echo '<img src=\"' . $tab_foto[$i] . '\"><br>';
  13. }
  14.  
  15. ?>

mam nadzieję, że jakoś pomogłem ... a jak nie to pomyślimy dalej ...

ciao
Go to the top of the page
+Quote Post
źrebak
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


No wlasnie o to chodzi ze nie ja tworzylem ta baze i nie mam mozliwosci w ingenrencje w jej strukture, musze ja polubic taka jaka ona jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Zrealizowalem to tak jak napisales, czyli: [foto.php]
  1. <?php
  2.  
  3.  
  4. header(&#092;"Content-type: image/JPEG\"); 
  5.  
  6. $q = &#092;"SELECT foto FROM oferty WHERE id = 'PSK00117'\";
  7. $r = mysql_db_query($baza,$q);
  8.  
  9. $tab_foto = array();
  10. while($row = mysql_fetch_array($r)){
  11. $tab_foto[] = $row[&#092;"foto\"];
  12. }
  13.  
  14. for($i=0; $i<=sizeof($tab_foto); $i++){
  15. echo '<img src=\"' . $tab_foto[$i] . '\"><br>';
  16. }
  17. ?>


wynikiem dzialania tych instrukcji, jest:

"Obrazek "http://bla-bla.pl/foto.php" nie może zostać wyświetlony, ponieważ zawiera błędy."
Go to the top of the page
+Quote Post
Ociu
post
Post #4





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Jeśli dobrze zrozumiałem, to chcesz przechowywać zdjęcia w bazie danych. Nie na sensu tego robić, gdyż skrypt będzie się długo wykonywał. Lepiej zdjęcia wrzucać na dysk, a w bazie przechowywać tylko dane o nim.

pozdrawiam
Go to the top of the page
+Quote Post
Nosfi
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 13.10.2004
Skąd: Świnoujście

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


Zgadzam się z przedmówcą (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Biorąc na dodatek pod uwagę że każde zdjęcie zajmuje osobny rekord ... męczarnia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Powodzenia
Go to the top of the page
+Quote Post
źrebak
post
Post #6





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


ale to nie ja jestem autorem tej bazy. Zdjecia byly w niej przechowywane od zawsze - i tak juz zostatnie! Ja musze je tylko wyswietlic.
Go to the top of the page
+Quote Post
NoiseMc
post
Post #7





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


Jeżeli obrazki są przechowywane w bazie to napewno są zakodowane base64 przy użyciu funkcji (base64_encode()). Proponuję użyć base64_decode() czyli:

  1. <?php
  2.  
  3. header ( 'Content-type: image/jpeg' ); 
  4.  
  5. $q = &#092;"SELECT foto FROM oferty WHERE id = 'PSK00117'\";
  6. $r = mysql_db_query ( $baza, $q );
  7.  
  8. $row = mysql_fetch_array ( $r );
  9.  
  10. echo base64_decode ( $row['foto'] );
  11.  
  12. ?>


Ten post edytował NoiseMc 4.05.2005, 20:15:51
Go to the top of the page
+Quote Post
źrebak
post
Post #8





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


niestety caly czas dostaje info ze obrazek nie moze zostac wyswietlony bo zwiera bledy (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Wrzuc zrzut SQLa tabeli i ewntualnie 1 rekord tego obrazka.
Go to the top of the page
+Quote Post
źrebak
post
Post #10





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


Ponizej zamieszczam PRTSc tabeli ZDJECIA

Print screen tabeli
Go to the top of the page
+Quote Post
NoiseMc
post
Post #11





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


Podeślij może też print screena z wynikiem działania skryptu:

  1. <?php
  2.  
  3. // Usun wysylanie naglowka zeby do przegladarki poszaedl tekst a nie image
  4. // header ( 'Content-type: image/jpeg' );
  5.  
  6. $q = &#092;"SELECT foto FROM oferty WHERE id = 'PSK00117'\";
  7. $r = mysql_db_query ( $baza, $q );
  8.  
  9. $row = mysql_fetch_array ( $r );
  10.  
  11. echo '----------------------------------------------------------';
  12. echo $row['foto'];
  13. echo '----------------------------------------------------------';
  14. echo base64_decode ( $row['foto'] );
  15. echo '----------------------------------------------------------';
  16.  
  17. ?>
Go to the top of the page
+Quote Post
źrebak
post
Post #12





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


  1. <?php
  2. $q = &#092;"SELECT foto FROM zdjecia WHERE unikat = '4KT00000000000000007'\";
  3. $r = mysql_db_query ( $baza, $q );
  4.  
  5. $row = mysql_fetch_array ( $r );
  6.  
  7. echo '----------------------------------------------------------';
  8. echo $row['foto'];
  9. echo '----------------------------------------------------------';
  10. echo base64_decode ( $row['foto'] );
  11. echo '----------------------------------------------------------';
  12.  
  13. ?>


Wynikiem dzialania powyzszego skryptu jest:
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in (..) on line 16"
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wywala ci błąd bo tutaj ($r = mysql_db_query ( $baza, $q )(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) masz coś źle.
CZy zmienna $baza jest dobra? Bo zapytanie $q wydaje się dobre.
Go to the top of the page
+Quote Post
źrebak
post
Post #14





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


  1. <?
  2.  
  3.  
  4.  
  5.  
  6. $query = &#092;"SELECT foto FROM zdjecia WHERE unikat = '4KT00000000000000007'\";
  7.  
  8. $result = mysql_query($sql);
  9.  
  10. $row = mysql_fetch_array ($result);
  11.  
  12. echo '----------------------------------------------------------';
  13. echo $row['foto'];
  14. echo '----------------------------------------------------------';
  15. echo base64_decode ( $row['foto'] );
  16. echo '----------------------------------------------------------';
  17.  
  18. ?>


dalej to samo..

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in line 17

Ten post edytował źrebak 5.05.2005, 14:08:40
Go to the top of the page
+Quote Post
SongoQ
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@źrebak Mam nadzieje ze haslo ktore podales w kodzie jest niepoprawne, bo jesli tak to szybko zmien zeby ktos nie wykorzystal tego.
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Podoba mi się ten fragment:
Cytat
$query = "SELECT foto FROM zdjecia WHERE unikat = '4KT00000000000000007'";

$result = mysql_query($sql);

kolega zapisuje zapytanie do zmiennej $query, a potem odwołuje się do zmiennej $sql. Dobre (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Magiczne przeniesienie wartości
Go to the top of the page
+Quote Post
źrebak
post
Post #17





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2005

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


zgadza sie, juz poprawilem. Dobrze jak ktos czasem potrafi spojrzec ze swojej perspektywy, pewnie ma tu tez swoje znaczenie doswiadczenie - ktorego niestety mi brak. No ale nic, staram sie brnąć dalej..

Wiec, wynikiem wykonania powyzszego (poprawionego) skryptu jest:
hmm, no chyba nie bede tu tego wklejal, ogolnie same krzaki! Po dopisaniu do skryptu naglowka
  1. <?php
  2. header ( 'Content-type: image/jpeg' );
  3. ?>

Otrzymuje informacje ze nie mozna wyswietlic tego pliku, blad.
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 - 06:55