In PHP geschriebener TV-Guide - Probleme mit datetime () und Datenbankfunktionen

Ich erstelle einen TV-Programmführer, in dem die anstehenden Programme (und bei einigen Listen auch frühere Sendungen aus der Vergangenheit) mit allen in einer Datenbank gespeicherten Daten aufgelistet sind. Es läuft in PHP, meine Version ist 5.28 (Upgrade auf 5.30 oder 6 in Kürze).

Unten sehen Sie ein Skript, das funktioniert (beachten Sie, dass das Feld airdate als DATETIME in der Datenbank gespeichert ist):

[Haftungsausschluss: Das Skript gehört nicht mir, sondern ist ein allgemeines Skript, das ich heruntergeladen und an meine eigenen Bedürfnisse angepasst habe.]

<? //connect to mysql //change user and password to your mySQL name and password
mysql_connect("localhost","root","PASSWORD"); 
//select which database you want to edit
mysql_select_db("tvguide1"); 
//select the table
$result = mysql_query("select * from epdata3 order by airdate LIMIT 20;");
//grab all the content
while($r=mysql_fetch_array($result))
{ 
 //the format is $variable = $r["nameofmysqlcolumn"];
 //modify these to match your mysql table columns
$programme=$r["programme"];
$channel=$r["channel"];
#$airdate = strtotime($r['airdate']);
  $airdate = strtotime($r['airdate']);
  $now = strtotime("NOW");
 $currentYear = date("Y", $now);
$yearOfDateFromDatabase = date("Y", $airdate);
 if($yearOfDateFromDatabase == $currentYear)
$dateFormat = "F jS - g:ia"; // dateFormat = 24 December
else
$dateFormat = "F jS, Y - g:ia"; // dateFormat = 01 January 2010
$currentTime = date("g:ia", $airdate); // format of "Y" gives four digit year ie 
2009 not 09
$airdateFormatted = date($dateFormat, $airdate);
$sDate = date("F dS, Y - g:ia",$airdate);
$episode=$r["episode"];
$setreminder=$r["setreminder"];
echo "<tr><td><b>$programme</b></td><td>showing on $channel</td>";
echo "<td>$airdateFormatted</td><td>$episode</td><td>$setreminder</td></tr>";
}
?>

Das zeigt alle Folgen an, die auftauchen, und wenn im nächsten Jahr welche auftauchen, werden sie mit dem Jahr wie folgt angezeigt:

Das nächste TV-Programm wird am 30. Dezember 2009 um 18:00 Uhr auf Channel1 ausgestrahlt. "Episode 1 - Photosynthese" -Erinnerung
Das nächste TV-Programm wird am 6. Januar - 14.45 Uhr auf Channel1 ausgestrahlt
Das nächste TV-Programm wird am 7. Januar - 20:00 Uhr auf Channel1 ausgestrahlt. "Ultimate Car Crimes" -Erinnerung

Ich möchte jedoch, dass bestimmte Datensätze nach Ablauf eines bestimmten Zeitraums entfernt werden (dies müsste jedoch irgendwo im Skript festgelegt werden, da die Programmlängen variieren), anstatt sie manuell aus der Datenbank zu löschen. Einige Programme sind 30 Minuten lang, andere 60 Minuten ... im Grunde variieren die Längen.

Was ich möchte, ist dies (Beachten Sie, dass das Datum in der ersten Auflistung nicht angezeigt wird, da es sich um das aktuelle Datum handelt.):

Das nächste Fernsehprogramm wird auf Channel1 um 18:00 Uhr gezeigt. "CCTV Cities - Wigan" -Erinnerung
Das nächste TV-Programm wird am 9. Januar - 14.45 Uhr auf Channel1 ausgestrahlt
Das nächste TV-Programm läuft am 10. Januar - 20:00 Uhr auf Channel1. "Celebrity 100 Worst Moments" -Erinnerung

aber ich weiß nicht, wie ich es konfigurieren soll, um dies mit PHP oder der date () - Funktion zu tun. Es funktioniert gut mit den Daten und zeigt sie an. Ich habe keinen Zugriff auf Cron-Jobs, da dies auf einer lokalen Apache-Installation unter Windows Vista Home Edition erfolgt.

Wenn mir jemand helfen könnte, dies herauszufinden, wäre er sehr dankbar - jede Hilfe ist sehr dankbar.

Ich habe diese Seite nicht als Live-Site veröffentlicht, da sie sich gerade in der "Entwicklungshölle" befindet und ich möchte, dass die Dinge so gut wie möglich funktionieren.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage