Online User anzeigen

Boostergermany

Erfahrenes Mitglied
Sodala, hat leider nicht lange gedauert bis ich mein nächstes Problem hatte...

Folgendes:
Ich will meine User anzeigen lassen, hab dafür folgendes gemacht:

PHP:
$abfrage = mysql_query("SELECT `user` FROM `dieb_user_".$digit."` WHERE `online` = 1");
if(!mysql_num_rows($abfrage))  
{
    $inhalt .= 'Keine User sind online.';
}
elseif(time()-1200 >=$time) {

    $inhalt .= '<b>Keine User sind online.';
}
else 
{
    while($row2 = mysql_fetch_assoc($abfrage))
    {
	$id = $row2["id"];
       $online .= (!empty($online) ? ', ' : '') . $row2['user'];
	
    }

    $inhalt .= '<b>Folgende User sind online: </b>'.$online.'';
}

So, jetz hab ich in ner DB die Loginzeit abgespeichert, unformatiert, und diese in der Variable $time abgespeichert, nun gibt mir mein BG aber immer nur die Elseif aus...gar nichts anderes mehr...why?
 
hab ich doch unten drunter geschrieben, ich habe bei der login.php die loginzeit - time() - in die DB abgespeichert in der spalte "time" sodala die variable hab ich jetz extra für dich hier nochmal angefügt:

PHP:
$time = $row["time"];

mhm...aber ich hab grad etwas entdeckt wo ich glaube das problem gesehn zu haben, ich melde mich gleich nochmal ^^


so, habs ausprobiert, indem ich es so machte:

PHP:
$abfrage = mysql_query("SELECT `user` FROM `dieb_user_".$digit."` WHERE `online` = 1");
while ($row =  mysql_fetch_array($abfrage))
{
$time = $row["time"];
}
if(!mysql_num_rows($abfrage))  
{
    $inhalt .= 'Keine User sind online.';
}
elseif(time()-1200 >=$time) {

    $inhalt .= '<b>Keine User sind online.';
}
else 
{
    while($row2 = mysql_fetch_assoc($abfrage))
    {
	$id = $row2["id"];
       $online .= (!empty($online) ? ', ' : '') . $row2['user'];
	
    }

    $inhalt .= '<b>Folgende User sind online: </b>'.$online.'';
}

hat aber nicht geklappt ...ich hab die variable nochmal extra abgespeichert, kurz vor der if-abfrage ^^
 
Zuletzt bearbeitet:
was steht wo drinne?

hab ich doch eigentlich alles gesagt

in der DB speicher ich die unformatierte zeit "time ()" ab,
ausgegeben wird auf der page nur das von elseif

aber ich will dass alle user ausgegeben werden, die die spalte 'online' auf 1 haben und in der spalte 'time' keine ältere zeit als von vor 20 mins haben, also 1200 sekunden ^^
 
@Boostergermany: Ist seit deinem ersten Post deine Shift-Taste nur noch bedingt betriebsfähig?

mfg Maik
 
Wie wärs mit sowas in der Art?
SQL:
SELECT user FROM tabelle WHERE online = 1 AND DATE_ADD(loginzeit,INTERVAL 1200 SECOND) > NOW()

Unter der Annahme, dass "loginzeit" als Datetime vorliegt.
 
Mein SQL Statement gibt dir alle Nutzer aus, welche bei "online" den Wert 1 haben oder in der Spalte "loginzeit" eine Zeit stehen haben, welche nicht älter als 1200 Sekunden ist. Das funktioniert aber nur, wenn "loginzeit" vom Datentyp "Datetime" ist.
Im Moment hantierst du ja anscheinend mit einer Spalte "time" vom Typ int, in welche du den aktuellen Unix Timestamp mit der PHP Funktion time() einträgst. Nimm stattdessen einfach einen Spalte mit Datetime und trage Datum+Zeit mit der MySQL Funktion "NOW()" ein. Dann musst du in PHP keine Berechnungen machen und die MySQL Zeitfunktionen sind sehr mächtig.
 
Zurück