Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla w pętli
Forum PHP.pl > Forum > PHP
seiks
Witajcie!

Robię skrypcik, który pokazuje mi dokładniejsze info o danym graczy ( czyli wyciąga mi jego wszystkie postacie etc). Wymyśliłem na to sposób taki:

  1. <?php
  2. $id=$_GET['id'];
  3.  
  4. include("connect.php");
  5.  
  6. $query = mysql_query("SELECT * FROM CodMod WHERE id='".$id."'")
  7. or die('Blad zapytania');
  8. while($output = mysql_fetch_assoc($query)){
  9.  
  10. //zmienne do 2 petli
  11. $nick = $output['nick'];
  12.  
  13.  
  14. $query2 = mysql_query("SELECT * FROM CodMod WHERE nick='".$nick."' DESC limit 0 , 10 ")
  15.  
  16. while($output2 = mysql_fetch_assoc($query2)){
  17. echo''.$output2['level'].'';
  18. }
  19.  
  20. echo '<div class="alert alert-info">
  21. Gracz <strong>'.$output['nick'].'</strong> ma x postaci.
  22. </div>';
  23.  
  24.  
  25. echo ''.$output['nick'].' '.$output['id'].'';
  26. }
  27.  
  28.  
  29. ?>


Jednak po dodaniu tej 2 pętli skrypt przestał działać. Moje pytanie dlaczego?smile.gif
Raito
Po co ci pętla w pętli? W tym przypadku myślę, że jest ona niepotrzebna. Jeśli każdy gracz ma swoje unikatowe id (przynajmniej tak powinno być) i unikatowy nick to po co utrudniasz sobie życie? Można usunąć pierwszą pętlę i odnieść się do gracza nie po nazwie, lecz po id.
seiks
  1. (7, 'STEAM_1:0:x', 'SeikS', 'Maslo', 4, 37, 5235, 70, 40, 30, 10),
  2. (8, 'STEAM_1:0:x', 'SWDR', 'Komandos', 5, 28, 523, 20, 10, 60, 30),
  3. (9, 'STEAM_1:0:x', 'BaszaR', 'General', 3, 19, 134, 9, 21, 42, 11);
  4. (10, 'STEAM_1:0:x', 'SeikS', 'Maslo', 4, 30, 5235, 70, 40, 30, 10),
  5. (11, 'STEAM_1:0:x', 'SWDR', 'Komandos', 5, 54, 7523, 20, 10, 60, 30),
  6. (12, 'STEAM_1:0:x', 'BaszaR', 'General', 3, 11, 164, 9, 21, 42, 11);


budowa bazy. Nick nie jest unikatowym wynikiem bo każdy nick może mieć wiele postaci.
ikssde
Pobierasz z tabeli rekordy na podstawie ID i potem pobierasz z tej samej tabeli rekordy na podstawie nicku, który pasuje do tego ID. Przecież to bez sensu bo pobierasz to samo.

Pokaż nam jakie masz kolumny w tej tabeli, co jest unikalne i co chcesz osiągnąć tym kodem.
seiks
  1. (`id`, `steamid`, `nick`, `class`, `class_id`, `level`, `experience`, `intelligence`, `healthness`, `strength`, `stamina`)


Pierwszym zapytaniem wyciągam id usera, którego otworzyliśmy zakładkę. Również wyciągam info o klasie, którą teraz oglądamy czyli reszta kolumn. Potem wyciągam nickiem w 2 zapytaniu wszystkie rekordy o tym nicku (mają to być pozostałe postacie na tym nicku). Chyba, że jest na to inne wyjście a ja jestem po prostu debilem i kombinuje biggrin.gif
ikssde
Możesz zrobić tak jak mówisz, ale skoro wyciągasz użytkownika na podstawie ID to znaczy, że jest ono niepowtarzalne, więc pierwszą pętlę (linia 8) możesz wyrzucić i zostanie tylko druga.
Jak już wyrzucisz pętle to dodaj sprawdzenie czy mysql_fetch_assoc zwraca rekord czy nic.
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.