Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pętle (switch) - niekończąca się
Forum PHP.pl > Forum > Przedszkole
Carveth
Witam

Nie jestem dobry w PHP ale uznałem że nie będę chodził krętymi ścieżkami pisząc jakiś 10 razy dłuższy kod. Napisałem coś takiego:

  1. $pk = $db -> Execute("SELECT * FROM pkp WHERE id=".$player -> id." ORDER BY czas DESC");
  2.  
  3. while (!$pk -> EOF)
  4. {
  5. if ($pk -> fields['ile'] == '-1')
  6. {
  7. $ile = '<b><span style="color:E10000">-1</span></b>';
  8. }
  9. else
  10. {
  11. $ile = '<b><span style="color:99CC00">+1</span></b>';
  12. }
  13. $od = $db -> Execute("SELECT user FROM players WHERE id=".$pk -> fields['od']." LIMIT 1");
  14.  
  15. switch ($pk -> fields['typ']) {
  16. case 'dop' : echo '<b>1. Kategoria Z</b><br />'.$ile.' od <a href="viev.php?id='.$pk -> fields['od'].'">'.$od -> fields['user'].' ('.$pk -> fields['od'].')</a><br />'; break;
  17. case 'cpo' : echo '<b>2. Kategoria X</b><br />'.$ile.' od <a href="viev.php?id='.$pk -> fields['od'].'">'.$od -> fields['user'].' ('.$pk -> fields['od'].')</a><br />'; break;
  18. case 'kk' : echo '<b>3. Kategoria C</b><br />'.$ile.' od <a href="viev.php?id='.$pk -> fields['od'].'">'.$od -> fields['user'].' ('.$pk -> fields['od'].')</a><br />'; break;
  19. case 'cpw' : echo '<b>4. Kategoria V</b><br />'.$ile.' od <a href="viev.php?id='.$pk -> fields['od'].'">'.$od -> fields['user'].' ('.$pk -> fields['od'].')</a><br />'; break;
  20. }
  21. }


W sumie tego case jest 10 ale tutaj skrocilem bo w zasadzie to prawie to samo jest. O co tu chodzi? Mam 10 kategorii i w tabelach podane sa wartosci do ktorych kategorii naleza (np. 10 wartosci do kategorii nr 1) - to jest ten caly switch. Chcę zrobić coś takiego że jeżeli należą wartości do kategorii np. 1 to pod nią się wyświetlaja w danej postaci. Niby wszystko działa rzecz w tym że ta pętla ciągnie się w nieskończoność...

Jak rozwiazac ten problem? Wiem ze da ise to napisac w banalny sposob ale nie bede przeciez osobno sciagal 10 razy tablic do wszystkich kategorii osobno...
pmir13
Operujesz cały czas na tym samym rekordzie, nie widzę nigdzie $pk->MoveNext(); a używasz EOF jako warunku zakończenia pętli.
Carveth
no ok, dodalem to movenext i juz dziala normalnie tyle ze nie otrzymalem nadal zamierzanego efektu ;p

bo pojawia sie oddzielnie rekord z podpisem tzn

1. Kategoria A
+1 - jakis rekord pla pla pla
1. Kategoria A
+1 - jakis rekord bla bla bla

a chce by sie wyswietlalo

1. Kategoria A
+1 - jakis rekord bla bla bla
+1 - jakis rekord pla pla pla
nospor
Zacznijmy od tego, że takie rzeczy załatwia się jednym zapytaniem a nie zapytaniami w pętli.
A dwa to jest to zwykłe grupowanie danych. Pisałem kiedyś o tym:
http://nospor.pl/grupowanie-wynikow.html
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.