Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Korzystanie z klasy w pętli
Forum PHP.pl > Forum > Przedszkole
karolo_k
Witam, mam taki problem który nie wiem jak obejść.
Mam pętle while która pobiera mi z bazy danych ip i port serwera potem wykorzystuje te dane w klasy gameq aby sprawdzic czy serwer jest online i wyswietlic potem odpowidni komunikat. I problemu nie ma jezeli w bazie jest tylko 1 adres serwera.
Mi się wydaje ze ten problem "Fatal error: Cannot redeclare pq_query_types() (previously declared in class_PQ.php:75) in class_PQ.php on line 81" wynika z tego że skrypt za czesto zwraca się do klasy.
Jak to rozwiązać?
Może ma ktoś inny skrypt stawierdzajacy czy serwer jest online?
lobopol
Jakbyś pokazał kod to byśmy może pomogli...
karolo_k
  1. <?php
  2. include("config.php");
  3. $conn = mysql_connect("$host","$nameuser","$passworddb" ) or die('Could not connect to mysql server.' );
  4. mysql_select_db("$namedb") or die('Could not select database.');
  5.  
  6. $sql = "SELECT `email`,`ip_adres`,`status` FROM `test_online`";
  7.  
  8. $abc = mysql_query($sql,$conn);
  9. if (!mysql_query($sql,$conn))
  10. {
  11. die('Error: ' . mysql_error());
  12. }
  13. while ($wiersz = mysql_fetch_row($abc))
  14. {
  15. echo '<p>'. $wiersz[0];
  16. $email = $wiersz[0];
  17. echo '<p>'. $wiersz[1];
  18. $adres = $wiersz[1];
  19. echo '<p>'. $wiersz[2];
  20. $status = $wiersz[2];
  21.  
  22. include("class_PQ.php");
  23. $pq = PQ::create($conf);
  24.  
  25. while($pobrane = $pq->query_info($adres)) {
  26.  
  27. $total = $pobrane['totalplayers'];
  28. $max = $pobrane['maxplayers'];
  29.  
  30. break;
  31.  
  32. }
  33.  
  34.  
  35. }
  36. ?>
JoShiMa
Wynika raczej, że kilka razy probujesz inkludowac ten sam plik więc duplikuje się klasa. Plik inkluduj przed while.
karolo_k
No dzięki pomogło smile.gif Myślałem ze to za często odnosiłem się do klasy gamq
JoShiMa
Cytat(karolo_k @ 28.01.2011, 20:08:33 ) *
No dzięki pomogło smile.gif

To kliknij co należy tongue.gif
Kshyhoo
No i to
karolo_k
  1. <?php
  2.  
  3. include("config.php");
  4. include("class_PQ.php");
  5.  
  6. $conn = mysql_connect("$host","$nameuser","$passworddb" ) or die('Could not connect to mysql server.' );
  7. mysql_select_db("$namedb") or die('Could not select database.');
  8. $sql = "SELECT `email`,`ip_adres`,`status` FROM `test_online`";
  9. $abc = mysql_query($sql,$conn);
  10. if (!mysql_query($sql,$conn))
  11. {
  12. die('Error: ' . mysql_error());
  13. }
  14. while ($wiersz = mysql_fetch_row($abc))
  15. {
  16.  
  17. $email = $wiersz[0];
  18. echo "a";
  19. $adres = $wiersz[1];
  20. echo "b";
  21. $status = $wiersz[2];
  22. echo "c<p>";
  23.  
  24. $pq = PQ::create($conf);
  25.  
  26. while($pobrane = $pq->query_info($adres)) {
  27.  
  28. $ping = $pobrane['ping'];
  29. $ip = $pobrane['ip'];
  30.  
  31. $port = $pobrane['port'];
  32. $nazwa = $pobrane['name'];
  33. $mapa = $pobrane['map'];
  34. $total = $pobrane['totalplayers'];
  35. $max = $pobrane['maxplayers'];
  36.  
  37. $haslo = $pobrane['serverlocked'];
  38. $protocol = $pobrane['protocol'];
  39. $gamename = $pobrane['gamename'];
  40. if($total < 1 and $max < 1)
  41. echo "off<p>";
  42. else
  43. echo "online<p>";
  44.  
  45.  
  46.  
  47. break;
  48.  
  49. }
  50.  
  51. }
  52.  
  53. ?>
No a teraz mam taki problem że nie wyświetla mi sie offline gdzy serwer jest offline pisze tylko gdy jest online
Wicepsik
Ponieważ twój warunek jest zawsze niespełniony.
karolo_k
Jeżeli masz na myśli zmienna max i total to one przybierają wartośćci.

W bazie mam zapisane 3 rekordy z adresami serwerów
1 Prowadzi do serwera który jest offline
2 To adres serwera online
3 To ten sam adres co w 1

I przy wcześniejszym skrypcie miałem tak że statusy wyświetłay się odpowiednie 1 offline 2 online 3 online chociasz 3 powinien być offline. A teraz w tym skrypcie co wrzuciłem to jest tak że pokazuje się tylko online a jak powinnno się wyświtlić offline to się nic nie dzieje.

  1. <?php
  2.  
  3. include("config.php");
  4. include("class_PQ.php");
  5.  
  6. $conn = mysql_connect("$host","$nameuser","$passworddb" ) or die('Could not connect to mysql server.' );
  7. mysql_select_db("$namedb") or die('Could not select database.');
  8. $sql = "SELECT `email`,`ip_adres`,`status` FROM `test_online`";
  9. $abc = mysql_query($sql,$conn);
  10. if (!mysql_query($sql,$conn))
  11. {
  12. die('Error: ' . mysql_error());
  13. }
  14. while ($wiersz = mysql_fetch_row($abc))
  15. {
  16.  
  17. $email = $wiersz[0];
  18. // echo "a";
  19. $adres = $wiersz[1];
  20. // echo "b";
  21. $status = $wiersz[2];
  22. // echo "c<p>";
  23. $pq = PQ::create($conf);
  24.  
  25. while($pobrane = $pq->query_info($adres)) {
  26. $ping = $pobrane['ping'];
  27. $ip = $pobrane['ip'];
  28. $port = $pobrane['port'];
  29. $nazwa = $pobrane['name'];
  30. $mapa = $pobrane['map'];
  31. $total = $pobrane['totalplayers'];
  32. $max = $pobrane['maxplayers'];
  33. $haslo = $pobrane['serverlocked'];
  34. $protocol = $pobrane['protocol'];
  35. $gamename = $pobrane['gamename'];
  36.  
  37. if($total < 1 and $max < 1)
  38. echo "offline";
  39. else
  40. echo "online";
  41. break;
  42.  
  43. }
  44. }
  45.  
  46. ?>
Ten kod nie wiem dlaczego ale wyświetla tylko jeżeli serwer jest online, a o wyświetleniu wiadomości offline to już zapomina. Do bazy wpisałem 3 adresy 1 offline 2 online 3 offline. No i efektem działania tej strony jest tylko 1 napis online.

Sory za post pod postem
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.