Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Pętle (switch) - niekończąca się
Carveth
post 26.04.2011, 14:32:59
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 20.02.2008

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


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

Ten post edytował Carveth 26.04.2011, 14:35:51
Go to the top of the page
+Quote Post
pmir13
post 26.04.2011, 15:25:58
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Operujesz cały czas na tym samym rekordzie, nie widzę nigdzie $pk->MoveNext(); a używasz EOF jako warunku zakończenia pętli.
Go to the top of the page
+Quote Post
Carveth
post 26.04.2011, 16:06:41
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 20.02.2008

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


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
Go to the top of the page
+Quote Post
nospor
post 26.04.2011, 18:00:46
Post #4





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




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 18.07.2025 - 07:43