Willkommen in der Webstatt Zum Webstatt Blog und Stories
phore phore am 08.08.06 09:21

hallo.

bei meiner "wer ist online" tabelle möchte ich bei jedem request alle einträge löschen die älter als 10min sind. in der db habe ich ein timestamp. kann ich das direkt mit sql machen?

$delOffline = "DELETE FROM
`tbl_online`
WHERE
`time` < NOW()-10.00";
mysql_query($delOffline);


das klappt leider nicht ganz.. gibt es da was?

und wenn ich schon dabei bin ;) - hier ist meine idee hinter der funktion:
ich habe einfach eine tabelle mit user_nr und timestamp, bei jedem request auf der seite prüft es ob man eingeloggt ist, wenn ja prüft es ob es schon einen eintrag hat von dem user, wenn nicht macht es einen. dann löscht es eben alle einträge die älter als 10min sind.

macht das sinn? bzw. gibt es eine bessere variante oder so?

danke! so long

netcup.de Warum gibt es hier Werbung?
leo am 08.08.06 09:42

schau mal im mysql-manual nach DATE_SUB()

gruß, leo.

phore phore am 08.08.06 09:47

scheint zu funktionieren danke.

phore phore am 08.08.06 15:37

ähm..irgendwie stimmt da was noch nicht..hier ist mein code:

# Einträge die älter als 10min sind löschen (=Offline)
$delOffline = "DELETE FROM `tbl_online` WHERE `time` < DATE_SUB(NOW(), INTERVAL 10 MINUTES)";
mysql_query($delOffline);


ist das falsch so?

tnY am 08.08.06 15:50

muss da net nen minus anstatt nen komma hin?
$delOffline = "DELETE FROM `tbl_online` WHERE `time` <= DATE_SUB(NOW() - INTERVAL 10 MINUTES)";

milahu milahu am 08.08.06 16:54

Jinonidi, nö. Das Komma trennt die Parameter der Funktion date_sub().

phore, was sagt mysql_error() ?

PS: Timestamps sind doof -- DateTime rulz! ;)

phore phore am 09.08.06 07:56

/edit. funzt! der fehler war dass man [FONT=courier new]MINUTE [/FONT]schreibt und nicht [FONT=courier new]MINUTES [/FONT]:)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt