Въпрос към онлайн/офлайн статиска

winers

Registered
Имам статиска за онлайн/офлайн потребители.
Статиската е "прецакана" и показва само мен в Онлайн потребители.
Така е с всички потребители.. показва единствено, че те са онлайн, а не са.

Кода

PHP:
<?
                            $time = time()-3*60;
                            $user = $logged['username'];
                            $query = mysql_query("UPDATE users SET status = '$time' WHERE username='$user'") or die (mysql_error());
                            $query1 = mysql_query("SELECT * FROM users WHERE status >= '$time'") or die (mysql_error());
                            $broi = mysql_num_rows($query1);
                            if($broi == 0)
                            {
                                echo "<font color='red'><img src='templates/img/icons/user_offline.gif' /> Няма онлайн потребители </font><hr>";
                            }
                            else
                            {
                                $row = mysql_fetch_array($query1);
                                echo "<hr class='dash' /><div><b><a href='profile.php?user=$row[username]'>$row[username]</a></b> <span style='float:right; margin-right: 5px;'><img src='templates/img/icons/online.gif' /></span></div> <hr class='dash' />";
                            }
                            echo "Общо онлайн: <b>".$broi."<br></b>";

                            ?>
 
PHP:
$time = time() - 3 * 60;
$user = $logged['username'];
$query = mysql_query("UPDATE users SET status = '$time' WHERE username='$user'") or die(mysql_error());
$query1 = mysql_query("SELECT * FROM users WHERE status >= '$time'") or die(mysql_error());
$broi = mysql_num_rows($query1);
if($broi > 0) {
for($i=0;$i<$broi;$i++) {
    $row = mysql_fetch_array($query1);
    echo "<hr class='dash' /><div><b><a href='profile.php?user=$row[username]'>$row[username]</a></b> <span style='float:right; margin-right: 5px;'><img src='templates/img/icons/online.gif' /></span></div> <hr class='dash' />";
}
}
else {
    echo "<font color='red'><img src='templates/img/icons/user_offline.gif' /> Няма онлайн потребители </font><hr>";
}
echo "Общо онлайн: <b>" . $broi . "<br></b>";
не е тествано, но трябва да работи
 
Ами отново е така..
Тоест рефрешвам от 10 пъти само 1-път покаже всички онлйна и като дам пак рефреш пак само мен си ме показва..
 
Нещо не мога да ти схвана кода:

текущото време - 3 минути
$time = time()-3*60;

записваш на текущия потребител в статус текущия момента - 3 минути
UPDATE users SET status = '$time' WHERE username='$user'

изваждаш всички потребители, които са със статус по-голям или равен от текущия момент -3 минути ???
SELECT * FROM users WHERE status >= '$time'

т.е. потребител 1 влиза в 15:10 (записваш 15:07), потребител 2 влиза в 15:11 (записваш 15:08), потребител 3 влиза в 15:12 (записваш 15:09)

Така на потребител 1 ще покажеж само него което е ОК,
на потребител 2 ще покажеш обаче пак само него защото where ти изглежда така "статус>=15:08", а потребител 1 е със статус 15:07. Респективно на потребител 3 where ще изглежда "статус>=15:09.

Според мен кодът би трябвало да е така:
PHP:
$time = time();
$user = $logged['username'];

$query = mysql_query("UPDATE users SET status = '$time' WHERE username='$user'") or die(mysql_error());
$query1 = mysql_query("SELECT * FROM users WHERE status >= ".($time-3*60)) or die(mysql_error());
$broi = mysql_num_rows($query1);

предполагайки че полето статус ти е timestamp.
 
Код:
<?
							$time = time();
                            $ontime = $time + 3*60;
                            $user = $logged['username'];
                            $query = mysql_query("UPDATE users SET status = 'ontime' WHERE username='$user'") or die (mysql_error());
                            $query1 = mysql_query("SELECT * FROM users WHERE status >= '$time'") or die (mysql_error());
                            $broi = mysql_num_rows($query1);
							$query2 = mysql_query("SELECT count(id) AS `kolkoON` WHERE `users` WHERE status >= '$time'") or die (mysql_error());
							$rowon = mysql_fetch_array($query2);
                            if($broi == 0)
                            {
                                echo "<font color='red'><img src='templates/img/icons/user_offline.gif' /> Няма онлайн потребители </font><hr>";
                            }
                            else
                            {
                                while($row = mysql_fetch_array($query1))
								{
									echo "<hr class='dash' /><div><b><a href='profile.php?user=$row[username]'>$row[username]</a></b> <span style='float:right; margin-right: 5px;'><img src='templates/img/icons/online.gif' /></span></div> <hr class='dash' />";
								}
                            }
                            echo "Общо онлайн: <b>".$rowon['kolkoON']."<br></b>";

                            ?>
 
#palex стана мерси +1

#rotator грешката:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `users` WHERE status >= '1312991251'' at line 1
 

Back
Горе