Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zapytanie SELECT
tr86
post 20.11.2009, 22:16:36
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


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. }
Go to the top of the page
+Quote Post
Blame
post 20.11.2009, 22:28:32
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


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ą.


--------------------
Go to the top of the page
+Quote Post
tr86
post 20.11.2009, 22:36:47
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


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ż...
Go to the top of the page
+Quote Post
patryk9200
post 20.11.2009, 23:31:49
Post #4





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


poczytaj o mysql_fetch_array bo masz źle zbudowaną pentlę a raczej jej brak.
Go to the top of the page
+Quote Post
cojack
post 20.11.2009, 23:53:33
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

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


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ć.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
tr86
post 21.11.2009, 12:01:43
Post #6





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


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. }


Ten post edytował tr86 21.11.2009, 12:03:30
Go to the top of the page
+Quote Post
patryk9200
post 21.11.2009, 18:51:34
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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.  
Go to the top of the page
+Quote Post
tr86
post 22.11.2009, 00:00:05
Post #8





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


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?



Ten post edytował tr86 22.11.2009, 00:50:35
Go to the top of the page
+Quote Post
patryk9200
post 22.11.2009, 09:27:52
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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.  
Go to the top of the page
+Quote Post
tr86
post 22.11.2009, 12:18:43
Post #10





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


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...
Go to the top of the page
+Quote Post
patryk9200
post 22.11.2009, 14:43:14
Post #11





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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.  
Go to the top of the page
+Quote Post
tr86
post 22.11.2009, 15:43:27
Post #12





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


Też nie działa. Efekt jest taki sam jak poprzednio, że się wyświetla ciągle to samo zdjęcie kilka razy
Go to the top of the page
+Quote Post
patryk9200
post 22.11.2009, 20:54:21
Post #13





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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
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: 27.04.2024 - 19:01