Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: petla warunkowa na elementach tablicy
Forum PHP.pl > Forum > Gotowe rozwiązania
engine
Witam. Mam stworzona baze wydarzen (imprezy). Nie moge poradzic sobie ze skryptem ktory pokazywalby 3 najblizsze imprezy. Dane z bazy SQL sa dobrze wczytywane, jednak skrypt wisi na warunku IF. Dla przykladu wrzucilem sobie do bazy 6 imprez wiec nie ma za duzo do myslenia. Jednak skrypt wisi. Czy moze mi ktos wytlumaczyc co robie nie tak, ewentualnie poprawic ten skrypt:

  1. <?php
  2.  
  3. $akt_rok = 2005;
  4. $akt_mies = 8;
  5. $akt_dzien = 21;
  6.  
  7. print &#092;"<tr><td><br><br>Baza koncertow:<br><br></td></tr>\";
  8.  
  9. $i=0;
  10. while ($rekord = mysql_fetch_array ($wynik)) {
  11. $id = $rekord[0];
  12. $dzien = $rekord[1];
  13. $miesiac = $rekord[2];
  14. $rok = $rekord[3];
  15. $miasto = $rekord[4];
  16. $miejsce = $rekord[5];
  17. $godzina = $rekord[6];
  18.  
  19. print &#092;"<TR><TD>$dzien.$miesiac.$rok</TD><TD>$miasto</TD><TD>$miejsce</TD><TD>$godzina</TD></TR>n\";
  20.  
  21. $tablica[$i][0] = $id;
  22. $tablica[$i][1] = $dzien;
  23. $tablica[$i][2] = $miesiac;
  24. $tablica[$i][3] = $rok;
  25. $tablica[$i][4] = $miasto;
  26. $tablica[$i][5] = $miejsce;
  27. $tablica[$i][6] = $godzina;
  28.  
  29. $i++;
  30.  
  31. }
  32.  
  33.  
  34. $wers=0;
  35.  
  36. while($wers < 3) {
  37.  
  38. for($a=0; $a<$i; $a++) {
  39.  
  40. if(($tablica[$a][3] == $akt_rok) && ($tablica[$a][2] == $akt_mies) && ($tablica[$a][1] == $akt_dzien)) {
  41.  
  42.  
  43. $tab3[$wers][1] = $tablica[$a][1]; // dzien
  44. $tab3[$wers][2] = $tablica[$a][2]; // miesiac
  45. $tab3[$wers][3] = $tablica[$a][3]; // rok
  46. $tab3[$wers][4] = $tablica[$a][4]; // miasto
  47. $tab3[$wers][5] = $tablica[$a][5]; // miejsce
  48. $tab3[$wers][6] = $tablica[$a][6]; // godzina
  49. $wers++;
  50. $akt_dzien++;
  51. if( $akt_dzien > 31) {
  52. $akt_dzien = 1;
  53. $akt_mies++;
  54. if ($akt_mies > 12) {
  55. $akt_mies = 1;
  56. $akt_rok++;
  57. }
  58. }
  59.  
  60. }
  61. }
  62.  
  63.  
  64.  
  65.  
  66. }
  67.  
  68.  
  69. ?>



Na koniec 3 najblizsze imprezy chce odczytac z tabeli $tab3 (pierwsze 3 elementy)
Z gory dziekuje
nospor
robisz while ($wers<3). $wers zwiększasz warunkowo. Najwyraźniej nie wchodzi ci w ten warunek (wystarczajaco ilosc razy)
engine
Juz wiem gdzie tkwi blad. Poprawiony skrypcik:

  1. <?php
  2.  
  3. while($wers < 3) {
  4.  
  5. for($a=0; $a<6; $a++) {
  6.  
  7. if(($tablica[$a][3] == $akt_rok) && ($tablica[$a][2] == $akt_mies) && ($tablica[$a][1] == $akt_dzien)) {
  8.  
  9.  
  10. $tab3[$wers][1] = $tablica[$a][1]; // dzien
  11. $tab3[$wers][2] = $tablica[$a][2]; // miesiac
  12. $tab3[$wers][3] = $tablica[$a][3]; // rok
  13. $tab3[$wers][4] = $tablica[$a][4]; // miasto
  14. $tab3[$wers][5] = $tablica[$a][5]; // miejsce
  15. $tab3[$wers][6] = $tablica[$a][6]; // godzina
  16. $wers++;
  17. break;
  18.  
  19. }
  20. }
  21. $akt_dzien++;
  22. if( $akt_dzien > 31) {
  23. $akt_dzien = 1;
  24. $akt_mies++;
  25. if ($akt_mies > 12) {
  26. $akt_mies = 1;
  27. $akt_rok++;
  28. }
  29. }
  30.  
  31.  
  32.  
  33. }
  34.  
  35. ?>
nospor
a nie prościej by ci bylo tych trzech imprez zapytaniem pobrać? nie trzeba potem zadnych skryptów pisać.
Ociu
  1. SELECT *
  2. FROM imprezy ORDER BY DATA DESC LIMIT 3
engine
Dzieki chlopaki, ale moze cos jasniej. Jestem zielony tongue.gif . Jak zauwazyliscie data w mojej bazie jest zapisywana w trzech komorkach
engine
Chwała dla Was biggrin.gif Nie sądziłem , ze otrzymam tak szybko odpowiedz. Dzieki
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.