DATE_SUB

DATE_SUB

am 11.05.2005 11:14:56 von Jochen Califice

Hallo NG!

Stehe grad etwas aufm Schlauch und brauch mal Hilfe.
Ich habe einen User der sich einloggt. In der Tabelle 'user' steht auch seit
wann er registriert ist.
Der User kann im Backend sogenannte 'Tickets' buchen. In der Tabelle
'tickets' steht dann ein Record mit seiner UserID.
Ich muss nun folgendes Szenarion durch checken:

- wenn der User > 10 Tage registriert ist und kein Ticket gebucht hat, dann
soll er auf eine Page geleitet werden in Richtung "Ihre Registrierung ist
abgelaufen...".
- wenn User <= 11 Tage registriert ist gibt es keine Probleme für ihn.

Wie ich Abfrage ob er ein Ticket gebucht hat, ist ja klar. Aber mit date_sub
bin ich noch net so vertraut. Ich habe mir es so gedacht:

$qry="SELECT DATE_SUB('$aktuellesDatum', INTERVAL 11 DAY)";
$regIstAelter=mysql_fetch_array($qry);

Wenn die Registrierung länger als 10 Tage her ist, müsste ja $regIsAelter
min. 1 sein. Oder verstehe ich das komplett falsch?

Wäre nett wenn Ihr mir etwas helfen würdet. Danke dafür im voraus!

Liebe Grüsse... Jochen

Re: DATE_SUB

am 11.05.2005 17:16:18 von Lars Bruening

Hi,

> $qry="SELECT DATE_SUB('$aktuellesDatum', INTERVAL 11 DAY)";
> $regIstAelter=mysql_fetch_array($qry);
>
> Wenn die Registrierung länger als 10 Tage her ist, müsste ja $regIsAelter
> min. 1 sein. Oder verstehe ich das komplett falsch?
>
> Wäre nett wenn Ihr mir etwas helfen würdet. Danke dafür im voraus!

DATE_SUB liefert ein Datum zurück... DATE_SUB("11.05.2005", INTERVAL 5 DAY)
liefert als ergebniss also "06.05.2005" du müsstest also dieses datum noch
mit dem reg-datum vergleichen (DATE_SUB() > reg_date ) um zu sehen, ob die
registrierung abgelaufen ist

im klartext:

select if (DATE_SUB(now(), INTERVAL 10 DAY) > user.reg_date, "true",
"false")
from ticket
left join user on user.userid = ticket.userid
where user.userid = "$userid"

als ergebniss solltest du dann "true" für älter und "false" für jünger
bekommen (ungetestet ;-) )

gruss,
Lars