Wieso hantierst du denn so umständlich mit Klassen herum? Die Klasse wird zuerst zweimal initialisiert und dann sogar in einem Fall noch geklont, verstehe da gerade nicht so den Sinn hinter.
Die Grundstruktur ist doch relativ unspektakulär:
- Code: Alles auswählen
<?php
$now = time(); // aktueller Timestamp
$period = $now + (14 * 86400); // Timestamp für die nächsten zwei Wochen
// abgelaufene Einträge entfernen
mysql('DELETE FROM klausuren WHERE datum<'.$now);
// aktuelle Einträge abrufen
$result = mysql_query('SELECT id, fach, time FROM klausuren WHERE time<'.$period);
while($row = mysql_fetch_assoc($result))
{
echo $row['id'].' '.date('d.m.Y',$row['datum']).' '.$row['fach'];
}
?>
Das wäre jetzt die Lösung für die Variante mit Timestamp in der Datenbank, die meiner Meinung nach am einfachsten und besten ist, da man beispielsweise bei den zwei Wochen einfach die entsprechende Sekundenzahl vom aktuellen Timestamp abziehen oder auf ihn addieren kann. So muss man sich keine Gedanken um Monatswechsel etc. machen.
Bei dem DATE-Format kann man zwar genauso mit den größer/kleiner-Operatoren arbeiten, dafür muss man aber immer wieder zusätzliche Berechnungen bei Monatsüberschneidungen durchführen lassen. PHP bietet dafür sogar extra Funktionen.
Die Variante mit dem Timestamp ist aber wesentlich einfacher und bietet sogar mehr Flexibilität bei der Datumsausgabe.
Achja, in dem von dir geposteten Code hast du übrigens in der while-Bedingung auch ein
mysql_query() verwendet, vermutlich sollte es aber ein
mysql_fetch_object() sein, oder? Ich nehme dort aber lieber
mysql_fetch_assoc() bzw.
mysql_fetch_array(), da die Array-Schreibweise wie ich finde übersichtlicher ist.