Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapytanie SELECT
Forum PHP.pl > Forum > Przedszkole
tr86
Mam problem z zapytaniem dotyczącym prawidłowego wyświetlania tytułu zdjęcia w galerii. Zapytanie obecnie pobiera pierwszy tytuł zdjęcia z danego id_konf
i przypisuje ten sam tytuł każdemu zdjęciu. Co zrobić, aby był wyświetlany odpowiedni tytuł zdjęcia dla każdego zdjęcia w galerii?
W tabeli galeria mam takie pola: id, id_konf, nazwa_pliku, tytul_zdjecia.


Oto kod:

  1. $zapytanie = mysql_query ("select * from galeria where id_konf='$wynik'") <---------------------- tutaj zapytanie
  2. or die('błąd: '.mysql_error());
  3.  
  4. $ile = mysql_num_rows($zapytanie);
  5.  
  6. $galeria = mysql_fetch_array($zapytanie);
  7. $galeria2 = mysql_fetch_array($zapytanie2);
  8.  
  9. if($ile > 0)
  10. {
  11. echo ('<font color="navy">');
  12. echo ('<center><b>Konferencja '.$galeria2['nazwa_konf'].' - <font color="red">Galeria zdjęć</font></b></center><br>');
  13. $dir = opendir("galeria/".$wynik."");
  14. while(false !== ($file = readdir($dir))) {
  15. if($file != "." && $file != "..") {
  16. $data = file("galeria/".$wynik."/".$file);
  17. $size = $data[1];
  18. if($size > 200) {
  19. $size = (int)($size/200)." KB";
  20. }
  21. else {
  22. $size = $size." B";
  23. }
  24. }
  25. echo ('<center><table border="1">
  26. <tr>
  27. <td><img src="galeria/'.$wynik.'/'.$file.'" width="550px" height="380px"/></td>
  28. </tr>
  29. <tr>
  30. <td bgcolor="gray"><center>'.$galeria['tytul_zdjecia'].'</center></td></tr></table></center><br><br>'); <------------------- tutaj wyświetlanie
  31. }
  32. closedir($dir);
  33. }
Blame
Tak na pierwszy rzut oka to wydaje mi się że całe wyświetlanie musisz zrobić jeszcze w pętli
  1. while(false !== ($file = readdir($dir))) {

na końcu, zaraz przed klamrą.
tr86
Cytat(Blame @ 20.11.2009, 22:28:32 ) *
Tak na pierwszy rzut oka to wydaje mi się że całe wyświetlanie musisz zrobić jeszcze w pętli
  1. while(false !== ($file = readdir($dir))) {

na końcu, zaraz przed klamrą.



Ale wyświetlanie jest w tej pętli przecież...
patryk9200
poczytaj o mysql_fetch_array bo masz źle zbudowaną pentlę a raczej jej brak.
cojack
Musisz przelecieć fetch_array by mieć z tego tablice, inaczej będziesz dostawał cały czas ostatni wynik z tablicy.

http://pl.php.net/mysql_fetch_array

exmaple 3, też tego na początku nie rozumiałem. Btw masz źle utworzoną galeria, powinieneś w bazie danych przechowywać takie informacje o zdjęciu jak nazwa_pliku. Łatwiej było by Ci później taką galerie wyświetlić.
tr86
Dzięki za pomoc. Udało mi się już pobrać te wartości, tylko one wyświetlają się w złym miejscu.
Tutaj jest screen --->

Chciałbym, żeby tak się wyświetlały wszystkie zdjęcia tak jak w obrazku1, a jak widać niżej się to wszystko rozjechało...
Czy ktoś wie czemu tak błędnie się to wyświetla? Z góry dziękuję za pomoc.
Oto kod do wyświetlania galerii:

  1. $zapytanie = mysql_query ("select tytul_zdjecia from galeria where id_konf='$wynik'")
  2. or die('błąd: '.mysql_error());
  3.  
  4. $ile = mysql_num_rows($zapytanie);
  5.  
  6. $galeria2 = mysql_fetch_array($zapytanie2);
  7.  
  8. if($ile > 0)
  9. {
  10. echo ('<font color="navy">');
  11. echo ('<center><b>Konferencja '.$galeria2['nazwa_konf'].' - <font color="red">Galeria zdjęć</font></b></center><br>');
  12. $dir = opendir("galeria/".$wynik."");
  13. while(false !== ($file = readdir($dir))) {
  14. if($file != "." && $file != "..") {
  15. $data = file("galeria/".$wynik."/".$file);
  16. $size = $data[1];
  17. if($size > 200) {
  18. $size = (int)($size/200)." KB";
  19. }
  20. else {
  21. $size = $size." B";
  22. }
  23. echo ('<center><table border="1">
  24. <tr>
  25. <td><img src="galeria/'.$wynik.'/'.$file.'" width="550px" height="380px"/></td>
  26. </tr>');
  27. while ($galeria = mysql_fetch_array($zapytanie, MYSQL_ASSOC)) {
  28. echo('<tr><td bgcolor="gray"><center>'.$galeria['tytul_zdjecia'].'</td></tr></table></center><br><br>');
  29. }}}
  30. closedir($dir);
  31. }
  32. echo ('<br><br><br><center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik.'>Wróć do strony konferencji</a></center>');
  33. }
patryk9200
masz zamknięcie tabeli w pętli.
tak powinno działać:
  1. $zapytanie = mysql_query ("select tytul_zdjecia from galeria where id_konf='$wynik'")
  2. or die('błąd: '.mysql_error());
  3.  
  4. $ile = mysql_num_rows($zapytanie);
  5.  
  6. $galeria2 = mysql_fetch_array($zapytanie2);
  7.  
  8. if($ile > 0)
  9. {
  10. echo ('<font color="navy">');
  11. echo ('<center><b>Konferencja '.$galeria2['nazwa_konf'].' - <font color="red">Galeria zdjęć</font></b></center><br>');
  12. $dir = opendir("galeria/".$wynik."");
  13. while(false !== ($file = readdir($dir))) {
  14. if($file != "." && $file != "..") {
  15. $data = file("galeria/".$wynik."/".$file);
  16. $size = $data[1];
  17. if($size > 200) {
  18. $size = (int)($size/200)." KB";
  19. }
  20. else {
  21. $size = $size." B";
  22. }
  23. echo ('<center><table border="1">
  24. <tr>
  25. <td><img src="galeria/'.$wynik.'/'.$file.'" width="550px" height="380px"/></td>
  26. </tr>');
  27. while ($galeria = mysql_fetch_array($zapytanie, MYSQL_ASSOC)) {
  28. echo('<tr><td bgcolor="gray"><center>'.$galeria['tytul_zdjecia'].'</center></td></tr>');
  29. }}}
  30. closedir($dir);
  31. }
  32. echo ('</table><br><br><br><br><br><center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik.'>Wróć do strony konferencji</a></center>');
  33. }
  34.  
tr86
Już jest prawie dobrze, ale jeszcze nieidealnie, bo wszystkie nazwy wyświetlają się po pierwszym zdjęciu, jak widać na screenie.
Co jeszcze można zmienić w tym skrypcie?

patryk9200
tak można tak powinno zadziałać:
  1. $zapytanie = mysql_query ("select tytul_zdjecia from galeria where id_konf='$wynik'")
  2. or die('błąd: '.mysql_error());
  3.  
  4. $ile = mysql_num_rows($zapytanie);
  5.  
  6. $galeria2 = mysql_fetch_array($zapytanie2);
  7.  
  8. if($ile > 0)
  9. {
  10. echo ('<font color="navy">');
  11. echo ('<center><b>Konferencja '.$galeria2['nazwa_konf'].' - <font color="red">Galeria zdjęć</font></b></center><br>');
  12. $dir = opendir("galeria/".$wynik."");
  13. while(false !== ($file = readdir($dir))) {
  14. if($file != "." && $file != "..") {
  15. $data = file("galeria/".$wynik."/".$file);
  16. $size = $data[1];
  17. if($size > 200) {
  18. $size = (int)($size/200)." KB";
  19. }
  20. else {
  21. $size = $size." B";
  22. }
  23. echo ('<center><table border="1">');
  24. while ($galeria = mysql_fetch_array($zapytanie, MYSQL_ASSOC)) {
  25. echo('<tr><td><img src="galeria/'.$wynik.'/'.$file.'" width="550px" height="380px"/></td>
  26. </tr><tr><td bgcolor="gray"><center>'.$galeria['tytul_zdjecia'].'</center></td></tr>');
  27. }}}
  28. closedir($dir);
  29. }
  30. echo ('</table><br><br><br><br><br><center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik.'>Wróć do strony konferencji</a></center>');
  31. }
  32.  
  33.  
tr86
Niestety nie działa, tak też już próbowałem ;/
Nazwy wyświetlają się dobrze, ale teraz obrazki niepoprawnie, bo pokazuje się jeden ten sam obrazek w kółko...
patryk9200
tak zrób:
  1. $zapytanie = mysql_query ("select tytul_zdjecia from galeria where id_konf='$wynik'")
  2. or die('błąd: '.mysql_error());
  3.  
  4. $ile = mysql_num_rows($zapytanie);
  5.  
  6. $galeria2 = mysql_fetch_array($zapytanie2);
  7.  
  8. if($ile > 0)
  9. {
  10. echo ('<font color="navy">');
  11. echo ('<center><b>Konferencja '.$galeria2['nazwa_konf'].' - <font color="red">Galeria zdjęć</font></b></center><br>');
  12. $dir = opendir("galeria/".$wynik."");
  13. while(false !== ($file = readdir($dir))) {
  14. if($file != "." && $file != "..") {
  15. $data = file("galeria/".$wynik."/".$file);
  16. $size = $data[1];
  17. if($size > 200) {
  18. $size = (int)($size/200)." KB";
  19. }
  20. else {
  21. $size = $size." B";
  22. }
  23.  
  24. while ($galeria = mysql_fetch_array($zapytanie, MYSQL_ASSOC)) {
  25. echo ('<center><table border="1">');
  26. echo('<tr><td><img src="galeria/'.$wynik.'/'.$file.'" width="550px" height="380px"/></td>
  27. </tr><tr><td bgcolor="gray"><center>'.$galeria['tytul_zdjecia'].'</center></td></tr></table><br><br>');
  28. }}}
  29. closedir($dir);
  30. }
  31. echo ('<br><br><br><center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik.'>Wróć do strony konferencji</a></center>');
  32. }
  33.  
  34.  
  35.  
tr86
Też nie działa. Efekt jest taki sam jak poprzednio, że się wyświetla ciągle to samo zdjęcie kilka razy
patryk9200
podaj cały skrypt z kąd bierzesz wartość $wynik ?
adres zdjęcia powinien być pobierany z bazy danych, inaczej będzie z tym problem, skrypt wyglądał by tak:
  1. $zapytanie = mysql_query ("select tytul_zdjecia from galeria where id_konf='$wynik'")
  2. or die('błąd: '.mysql_error());
  3.  
  4. $ile = mysql_num_rows($zapytanie);
  5.  
  6. $galeria2 = mysql_fetch_array($zapytanie2);
  7.  
  8. if($ile > 0)
  9. {
  10. echo ('<font color="navy">');
  11. echo ('<center><b>Konferencja '.$galeria2['nazwa_konf'].' - <font color="red">Galeria zdjęć</font></b></center><br>');
  12. while ($galeria = mysql_fetch_array($zapytanie, MYSQL_ASSOC)) {
  13. echo ('<center><table border="1">');
  14. echo('<tr><td><img src="galeria/'.$wynik.'/'.$galeria['adres_zdjecia'].'" width="550px" height="380px"/></td>
  15. </tr><tr><td bgcolor="gray"><center>'.$galeria['tytul_zdjecia'].'</center></td></tr></table><br><br>');
  16. }}}
  17. closedir($dir);
  18. }
  19. echo ('<br><br><br><center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik.'>Wróć do strony konferencji</a></center>');
  20. }

dodaj do bazy danych adres_zdjecia i będzie gotowe
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.