Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Osoby online
Mlodycompany
post 20.09.2009, 10:32:39
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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




Ten post edytował Mlodycompany 20.09.2009, 10:34:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Zyx
post 20.09.2009, 10:40:44
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Mlodycompany
post 20.09.2009, 10:49:22
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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.
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: 14.08.2025 - 09:44