Seite 1 von 3

datum vergleichen und bei bedarf löschen

Verfasst: 16.05.2004 00:45
von Lord_Femto
hallo. ich möchte gern ein php script für eine homepage entwickeln, doch weiß nicht, wie ich anfangen soll.

www.pandemicbrew.de/gigs.htm .

dort sind verschiedene gigs (auftritte) zu sehen, die die bandleute mittels formular adden können.

ich möchte nun, dass folgendes passiert. wenn das datum des gigs überschritten ist, dann soll der jeweilige eintrag in der datenbank gelöscht werden.
das datum ist mit mysql erzeugt worden und dann umgestellt. also kein varchar.

zuerst muss ich doch die zeit des servers herausfinden, dann miteinander vergleichen und dann bei zutreffen, löschen, oder?
ich weiß bloß nicht, wie ich anfangen soll und welche functionen ich einsetzen soll. ob nun date() oder mktime() oder doch lieber strtotime(). die andere frage ist ja, wo ich diesen code einschreiben muss? in die datei des rechten frames?

es kommt nicht auf die zeit an. ein tag danach ist schon vollkommen ok.
danke im voraus.

Verfasst: 16.05.2004 01:20
von PhilippK
Ich würde solche Sachen evtl. gleich auf MySQL-Ebene lösen: http://dev.mysql.com/doc/mysql/en/Date_ ... tions.html

Gruß, Philipp

Verfasst: 16.05.2004 01:42
von Lord_Femto
diese art und weise ist natürlich viel besser. danke für den tipp.

aber bitte sag mir, was ich für eine function oder command nehmen soll.
das sind ja noch mehr, als bei php!!!

Verfasst: 16.05.2004 11:24
von PhilippK
Was für 'nen Datentyp hat denn das Datumsfeld?

Gruß, Philipp

Verfasst: 16.05.2004 11:35
von Lord_Femto
ich nutze für die tabelle den datentyp DATE

Verfasst: 16.05.2004 12:10
von PhilippK
Dann würde ich es mal mit 'nem einfachen Vergleich probieren:

Code: Alles auswählen

WHERE feld_inhalt < CURDATE()
Gruß, Philipp

Verfasst: 16.05.2004 12:47
von Lord_Femto
hi philipp

cool danke. eine frage vorweg. wird dieser befehl jeden tag ausgeführt? denn ich will ja, dass er automatisch die posts löscht, wenn das datum überschritten ist und nicht jeden tag über die sql abfrage gehen.

und zweitens.

heißt der sql befehl dann:

Code: Alles auswählen

DELETE * FROM `PB-Gigs` WHERE `datum2` < CURDATE()
??? danke im voraus

Verfasst: 16.05.2004 13:16
von PhilippK
Ein SQL-Befehl wird immer nur dann ausgeführt, wenn die zugehörige PHP-Seite ausgeführt wird. Du solltest also die Abfrage immer vor der Anzeige der Datensätze ausführen - damit hast du das Problem auch gelöst.
Ansonsten scheint mir die Abfrage zu stimmen - wenn datum2 das entsprechende Feld in der DB ist.

Gruß, Philipp

BTW: vor dem Probieren immer ein Backup erstellen

Verfasst: 16.05.2004 14:51
von Lord_Femto
hi philipp. ich bin es noch einmal.

habe es jetzt wie folgt gemacht:

Code: Alles auswählen

$vb = mysql_connect('xxxxxxx', 'xxxxxxx', 'xxxxxxx');
$daten = mysql_db_query("xxxxxxxxx", "delete * from `PB-Gigs` where CURDATE() > datum2", "select date_format(datum, '%d.%m.%Y') as datum, datum2, zeit, info, ort from `PB-Gigs` order by datum2");
$anzahl = mysql_num_rows($daten);
trotzdem tritt folgender fehler auf:


Code: Alles auswählen

Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in /home/www/web218/html/gigs-main.php on line 29

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web218/html/gigs-main.php on line 30

Verfasst: 16.05.2004 15:38
von PhilippK
Versuch mal

Code: Alles auswählen

$vb = mysql_connect('xxxxxxx', 'xxxxxxx', 'xxxxxxx');
mysql_select_db("xxxxxxxxx");
mysql_query("delete * from `PB-Gigs` where CURDATE() > datum2", $vb);
$daten = mysql_db_query("select date_format(datum, '%d.%m.%Y') as datum, datum2, zeit, info, ort from `PB-Gigs` order by datum2", $vb);
Gruß, Philipp