Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Licznik osób Online
Forum PHP.pl > Forum > PHP
sebekzosw
  1. <?php
  2. function goscie_online(){
  3.    $timeout = time()-30;
  4.    $add = true;
  5.    $online = 0;
  6.  
  7.    $on = @mysql_query("SELECT * FROM online ORDER BY czas DESC");
  8.  
  9.    while($row = @mysql_fetch_array($on)) {
  10.        if($row['ip'] == IP_UZYTKOWNIKA) {
  11.            @dbquery("UPDATE online SET czas='".time()."' WHERE id='".$row['id']."'");
  12.            $add = false;
  13.        }
  14.    }
  15.  
  16.    if($add) {
  17.        @dbquery("INSERT INTO online (ip, czas) VALUES ('".IP_UZYTKOWNIKA."', '".time()."')");
  18.    }
  19.  
  20.     @dbquery("DELETE * FROM online WHERE czas>'".$timeout."'");
  21.  
  22.    $online = @dbcount("(id)", "online", "czas<$timeout");
  23.    return $online;
  24. }
  25.  
  26. echo goscie_online();
  27.  
  28. ?>


Nie wiem czemu, ale ten skrypt nie działa ;| Mógłby ktoś pomóc w jego naprawie?

Wyskakuje jakiś taki błąd między innymi: "Something is wrong in your syntax obok '* FROM online WHERE czas>='1238963269'' w linii 1Osób online: 0"
mike
1. Dopisz na początku skryptu:
  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. ?>

2. Pogoń małpy z kodu. To nie zoo tongue.gif

3. Jaki format danych przyjmuje pole czas w bazie?
sebekzosw
Format danych to liczbowy - INT smile.gif
Kildyt
Cytat(mike @ 5.04.2009, 22:31:55 ) *
2. Pogoń małpy z kodu. To nie zoo tongue.gif
Gratuluję udanego słówka. winksmiley.jpg Hehe tongue.gif Żeby nie było, to do apelu się przychylam.

Co do kodu, to dla mnie jest trochę bezsensu. Zmienna $add jest według mnie bezsensu.
Istnieje coś takiego jak DELETE * FROM? Ja zawsze używam same DELETE FROM. Tak to jest jak się nie idzie do przodu. sad.gif
mike
Cytat(sebekzosw @ 5.04.2009, 22:34:40 ) *
Format danych to liczbowy - INT smile.gif
Integer powiadasz?
To czemu przyrównujesz do stringa? czas>='1238963269'
sebekzosw
Cytat(mike @ 5.04.2009, 22:41:58 ) *
Integer powiadasz?
To czemu przyrównujesz do stringa? czas>='1238963269'


Jestem przekonany, że dobrze porównuje - w końcu to i to to liczby ;> smile.gif
mike
Cytat(sebekzosw @ 5.04.2009, 22:44:42 ) *
Jestem przekonany, że dobrze porównuje - w końcu to i to to liczby ;> smile.gif
Tak Ci się tylko wydaje. To są różne typy danych a to, że akurat string zawiera liczbę to MySQL'a nie interesuje.
sebekzosw
  1. <?php
  2. function goscie_online(){
  3.    $czas = time()+(5*60*60);
  4.    $online = 1;
  5.  
  6.    $r = mysql_num_rows(mysql_query("SELECT * FROM `online` WHERE ip = '".IP_UZYTKOWNIKA."'"));
  7.  
  8.    if ($r ==1){
  9.        $resultstatus = mysql_query("UPDATE online SET czas='".$czas."' WHERE ip='".IP_UZYTKOWNIKA."'");
  10.    } else {
  11.        mysql_query("INSERT INTO `online` (ip, czas) VALUES ('".IP_UZYTKOWNIKA."','".$czas."')");
  12.    }
  13.  
  14.    $odpowiedz = mysql_query("SELECT id,czas FROM online");
  15.  
  16.    while($row = mysql_fetch_assoc($odpowiedz)) {
  17.        $id=($row['id']);
  18.        $czas=($row['czas']);
  19.  
  20.        if ($czas<=time()){
  21.            $odpowiedz=mysql_query("DELETE FROM `online` WHERE id = '$id'");
  22.        }
  23.    }
  24.  
  25.    $online = dbcount("(id)", "online", "czas>".time()."");
  26.    return $online;
  27. }
  28. ?>


Znalazłem jakiś skrypt więc dostosowałem go do swoich potrzeb. Czy wg Was będzie działał poprawnie? smile.gif
mike
Cytat(sebekzosw @ 5.04.2009, 23:01:50 ) *
Znalazłem jakiś skrypt więc dostosowałem go do swoich potrzeb.
A co z poprzednim? Odpuszczasz bo trzeba pomyśleć chwilę i się wysilić?
Cytat(sebekzosw @ 5.04.2009, 23:01:50 ) *
Czy wg Was będzie działał poprawnie? smile.gif
Nie. Bo nie dasz radu uruchomić. Nie zasłużyłeś ::
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.