Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Osoby online
Forum PHP.pl > Forum > PHP
Mlodycompany
Witajcie. Pisząc skrypt pokazujący ilośc osób online natykam się na problem.

[PHP] pobierz, plaintext
  1.  
  2. function online_off_dodaj(){
  3.  
  4. $dodaj = mysql_query("INSERT INTO `online_off` (`ID`, `ip`, `time`, `self`, `przegladarka`, `system`) VALUES('', '".$_SERVER['REMOTE_ADDR']."', '".time()."', '".$_SERVER['PHP_SELF']."', '0', '0')");
  5. }
  6. function online_pokaz(){
  7. $time = time();
  8. $time = $time - (15*60);
  9. $query = mysql_query("SELECT * FROM `online_off` WHERE `time` > '".$time."' ");
  10. while($row = mysql_fetch_array($query)){
  11. echo("<pre>");
  12. print_r($row);
  13. echo("</pre>");
  14. }
  15. }
  16.  
  17.  
[PHP] pobierz, plaintext

Wszystko fajnie działa. ALE. Zapisuje do tabeli po kilka razy jedno ip, więc gdy wziąłem [SQL] pobierz, plaintext
  1. "SELECT DISTINCT FROM `online_off` WHERE `time` > '".$time."' "
[SQL] pobierz, plaintext pokazało
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...
w linii tego zapytania. Z drugiej strony myślałem aby przed dodaniem sprawdzało czy dane ip jest w tabeli i jakby było to żeby zmieniało tylko time, ale wtedy jest dużo zapytań i wogóle więc strona jest obciążona troszke. Co by było najlepszym rozwiązaniem?




P.S. Dodam do tego, że chciałbym na tej tabeli jeszcze zrobić licznik odwiedzin smile.gif


Zyx
Tak to jest, jak się nie używa żadnego raportowania błędów. Napisz sobie jakąś nakładkę na mysql_query(), która będzie sprawdzać błędy i sensownie je raportować, bo na razie w przypadku błędu zapytania (a tak jest w Twoim przypadku), dostajesz wartość false zamiast zbioru wyników i mysql_fetch_costam() się burzy.

  1. <?php
  2. $result = mysql_query('...');
  3. {
  4. // tutaj możesz sobie poprzez mysql_error() ładnie wyświetlić komunikat
  5. }


Gdy już to sobie wyświetlisz, powinieneś mieć jasność, co masz nie tak w zapytaniu smile.gif. Ja oczywiście wiem, co jest źle, ale chyba lepiej dla Ciebie będzie, byś sam spróbował dojść do tego i zastosował odpowiednie zabezpieczenia przed analogicznymi sytuacjami w przyszłości, tym bardziej że czasochłonne to nie jest.
Mlodycompany
Wzasadzie jak przeczytałem Twoją wypowiedz i się zastanowiłem to doszedłem do wniosku że zapytanie nie wie z której kolumny ma te dane pobierać biggrin.gif. Zmieniłem zapytanie i działa.
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.