time() - 15*60 < timestamp

  • Themenstarter Themenstarter Dosenmilchkrug
  • Beginndatum Beginndatum
D

Dosenmilchkrug

PHP:
$db_result_online = $db->query('SELECT COUNT(`name`) AS `online`
                                        FROM `user`
                                        WHERE `online` = 1 AND `last_action` > ' . (time() - 15*60) . '
                                        LIMIT 1');
        $db_row_online = $db->fetch_object($db_result_online);
        $online = $db_row_online->online;

Seit ich Xampp neuinstaliert habe zeigt es immer 0 an auch wenn ich last_action manuell auf 99999999999999999 stelle
 
es funktiert auch nicht bei if($user->get_last_action() > (time() - 15*60)), obwohl wenn ich es ausgebe es größer ist
 
Hallo

versuche mal die Berechnung in einer Variable abzuspeichern und gebe dann mal beide Werte mit var_dump() aus.
 
Versuche es mal so:

PHP:
$db_result_online = $db->query('SELECT COUNT(name) AS online
                                        FROM user
                                        WHERE online = 1 AND last_action > ' . (time() - 15*60) . '
                                        LIMIT 1');
        $db_row_online = $db->fetch_object($db_result_online);
        $online = $db_row_online->online;
 
Hallo!

PHP:
$db_result_online = $db->query('SELECT COUNT(`name`) AS `online`
                                        FROM `user`
                                        WHERE `online` = 1 AND `last_action` > ' . (time() - 15*60) . '
                                        LIMIT 1');
        $db_row_online = $db->fetch_object($db_result_online);
        $online = $db_row_online->online;
Seit ich Xampp neuinstaliert habe zeigt es immer 0 an auch wenn ich last_action manuell auf 99999999999999999 stelle
Hmm, XAMPP..... zufälligerweise unter Windows?
php.net hat gesagt.:
Hinweis: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT. (Das entspricht den minimalen und maximalen Werten für einen vorzeichenbehafteten 32-Bit Integer). Unter Windows-Betriebssytemen ist dieser Bereich auf 01-01-1970 bis 19-01-2038 beschränkt.
Du ziehst vom aktuellen Timestamp 15 ab und multiplizierst das Ergebnis mit 60.
Ich habe jetzt keine Lust das Ergebnis auszurechnen, aber ich denke dass der Timestamp jenseits vom 19.01.2038 liegt.
Daher würde ich es einfach mal mit "Punkt- vor Strichrechnung" versuchen. ;)
PHP:
 ' . (time() - (15*60)) . '
Gruss Dr Dau
 
Hi

Die Klammern können weggelassen werden, da PHP automatisch nach Punkt vor Strichrechnung rechnet.
PHP:
$a = 1000 - 15*60;
$b = 1000 - (15*60);
echo $a; //100
echo $b; //100

edit: Getestet unter Xampp und Windows7 ;)
 
-15*60
Sollte wohl Minus 15 Minuten bedeuten. Wazu so kompliziert, wenn MySQL da schon was anbietet? ADDDATE()/SUBDATE() macht genau dasselbe

SQL:
AND last_action > SUBDATE(NOW(), INTERVAL 15 MINUTE)


So als Test:
SQL:
SELECT 
	SUBDATE(NOW(), INTERVAL 15 MINUTE) AS T1, 
	NOW() AS T2

Ausgabe
Code:
T1: 2010-05-10 10:41:10
T2: 2010-05-10 10:56:10

Nachtrag:
Und wenn du die Zeit als Unix-Timestamp speicherst, kannst du das ganz einfach noch konvertieren mit UNIX_TIMESTAMP()
SQL:
AND last_action > UNIX_TIMESTAMP(SUBDATE(NOW(), INTERVAL 15 MINUTE))
 
Zuletzt bearbeitet von einem Moderator:
Zurück