Ich möchte, dass die Datensätze in der Tabelle (MySQL) petra jeweils nach genau 60 Minuten wieder gelöscht werden. Dazu hat jeder Datensatz die Spalte datum, die bei jedem Eintrag via date(„Y-m-d H:i:s“) gefüllt wird.
Und so versuch ichs dann zu löschen:
[CODE]$current_date = date(„Y-m-d H:i:s“);
mysql_select_db(‚datenbank‘, $db);
$sql = „DELETE FROM petra WHERE datum < $current_date“;[/CODE]Jetzt müsste ich in der letzten Zeile ja nurnoch die Zeit abziehen, aber wie?
Oder gibt es evtl. sogar 'ne Möglichkeit, dass ohne PHP zu realisieren? Also kann man evtl direkt bei phpmyadmin iwas in der Richtung machen?
also ich hab das bei mir mehrfach wegen ip sperren und so gemacht und ich speichere der einfachkeit halber jedes datum von mir als timestamp
also unix halt
kann vllt umständlich wirken aber einfach anstatt dem für das datum nötigen feldtyp der mysql tabelle eine 12 stellen großen int erstellen
und dann in php immer mit time() einen aktuellen timestamp generieren
umwandeln geht genauso einfach:
[PHP]$current_date = date(„Y-m-d H:i:s“, $selectabfrage[‚timestampspalte‘]);[/PHP]
und um dann zeitunterschiede zu messen musst du nur in sekunden zeit abziehen
also zb
[PHP]$sql = "DELETE FROM petra WHERE datum < ".(time() - 60*60;[/PHP]
also 60 mal 60 sekunden = 1 stunde
ich hoffe das ist eine gute lösung und nicht nur eine einfache
Also, ersma Danke! :lol:
Ich denke deine Variante ist wirklich besser geeignet.
Allerdings bekomm ichs nich hin.
Es scheitert bei der Timestamp-Generierung.
Ich bekomme immer nur den Wert 0 eingetragen.
[PHP]$current_date = date(„Y-m-d H:i:s“);
$timestamp = time(); // Was muss den hier rein?
$sql_befehl = „INSERT INTO petra (id, thomas, datum, timestamp) VALUES (‚‘, ‚$thomas‘, ‚$current_date‘, ‚$timestamp‘)“;[/PHP]Habe ganz am Anfang auch schon mal was mit Timestamp machen wollen und auch immer nur 0 bekommen.
hast du mal probiert dir den timestamp ausgeben zu lassen
nur zur kontrolle
also:
[PHP]echo time();[/PHP]
und dann musst du schauen dass dein int feld in der tabelle groß genug is
kannst ja mal schauen manuell also per phpmyadmin ob du da nen timestamp reingriekst
vllt gibt der dir sogar nen error
es gibt nämlich au ne mysql funktion fürn unix timestamp
Für solche Sachen würde ich nie php bemühen. MySQL hat genug Datums- und Zeitfunktionen um das selbst zu erledigen.
INSERT INTO petra (id, thomas, datum, timestamp) VALUES ('', '$thomas', '$current_date', UNIX_TIMESTAMP());
DELETE FROM petra WHERE datum < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 hour));
cool thx für die verbesserung
ist das auch wirklich schneller oder lastet das nur die anforderung vom php server auf den mysql server
ist mysql da schneller weil sonst würde das performance technisch nichts bringen weil das scrpt ja eh auf die antwort wartet oder?
MySQL ist für viele (nicht alle!) Berechnungen oft performanter und (wenn es um Shopsysteme mit Preisberechnungen geht) (meist!) auch genauer. Ich würde es immer vorziehen, wenn ohnehin ein SQL-Statement verwendet wird. Spart btw. auch PHP-Code