Php,mysql Datum. Wenn eintrag älter als 7 tage ist anzeigen..

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.749
125
Hey Leute ich habe da mal ein Kleines Problem..

In der Datenbank:
Zeile : buchungsdatum
Enthält : 14.2.2012,09:12

Scriptabfrage:
PHP:
$abfrage = "SELECT * FROM $dbbuchung where status='nein' AND buchungsdatum >= '$datum'";

.....
Die Variable $datum da steht diese :
PHP:
$datum=date("d.n.Y,H:i");

Gibt es eine Lösung das mir mein Script nur das Ergebnis anzeigt wenn diese älter als 7 tage ist?

Bsp:
buchungsdatum = 12.2.2012,09:12
Datum Heute ist 14.02.2012,09:12
Ergebnis nicht anzeigen

buchungsdatum = 12.2.2012,09:12
Datum Heute ist 19.02.2012,09:12
Ergebnis anzeigen


Ich hatte noch einen Versuch gemacht mit:
PHP:
$abfrage = "SELECT * FROM $dbbuchung where status='nein' AND buchungsdatum >= '$datum_neu'";

.....
Die Variable $datum_neu da steht diese :
PHP:
$tag=date("d")+7;
$monat=date("n");
$jahr=date("Y");
$stunde=date("H");
$minute=date("i");

$datum_neu="$tag.$monat.$jahr,$stunde:$minute";

Auch so könnte ich mir nicht helfen:

PHP:
SELECT * FROM $dbbuchung WHERE DATEDIFF(buchungsdatum, NOW()) >= 7

Noch ne info:
zeile buchungsdatum ist varchar(40)


Hoffentlich kann mir einer helfen :(
 
du hast dein Datum in der Datenbank so gespeichert, dass MySQL darauf keine Vergleiche durchführen kann, denn es ist nur ein String.
Um Vergleiche durchzuführen muss es eine Datenstruktur mit einer natürlichen Ordnung sein, also entweder du verwendest DATETIME, INT oder du bastelst den übelsten Hack zusammen mit den Date-funktionen zusammen um aus deinem Darums-String ein reguläres MySQL-Datum zu erzeugen und nutzt dann dessen natürliche Ordnung.
 
das könnte ich mir schon fast denken.. Naja dann werde ich mich dann ,wenn ich wieder zu Hause bin, mal hinsetzen und es umschreiben.

bis hierher ersteinmal danke an alle die geholfen haben,Lösung Poste ich dann hier..
 
So habe es umgeschrieben.

Zeile : buchungsdatum int(11)
Datum schreibe ich jetzt mit time() in die Zeile also steht jetzt dort: "1329055723"

Meine Lösungs:
PHP:
$nextWeek = time() - (7 * 24 * 60 * 60);
$abfrage = "SELECT * FROM $dbbuchung where status='nein' AND buchungsdatum <='$nextWeek'";

Und es scheint so als dürfte es Funktionieren! Danke für eure Tipps und Ratschläge!