Wir hatten die Aufgabe, einen Monatskalender für die chirurgische Abteilung in einem Krankenhaus zu schreiben. Der Kalender sollte jeden Tag anzeigen, also auch Tage welche keine ambulanten Untersuchungen, Aufnahmen oder OP Termine beinhalten. Weiters sollte die aktuelle Kalenderwoche dargestellt werden, ebenso allgemeine Termine wie z.B. Schulbeginn, sowie alle Feiertage.
Feiertage und allgemeine Termine sollten als solche gekennzeichnet werden.
Zuerst trugen wir die Termine und Feiertage in ein PHP-Array ein. Aber es zeigte sich bald, dass diese Datei ‘not human readable’ war, Fehler sind nicht leicht erkennbar und mussten mühsam gesucht und korrigiert werden.
$feiertage = array (
"2011-07-02" => array("text" => "Beginn Sommerferien f. Bgld, NÖ, Wien", "type" =>"t"),
"2011-07-09" => array("text" => "Beginn Sommerferien f. Ktn, OÖ, Sbg, Stmk, Tirol, Vbg", "type" =>"t"),
"2011-08-15" => array("text" => "Mariä Himmelfahrt", "type" =>"f"),
"2011-09-03" => array("text" => "Ende Sommerferien für Bgld, NÖ, Wien", "type" =>"t"),
"2011-09-10" => array("text" => "Ende Sommerferien f. Ktn, OÖ, Sbg, Stmk, Tirol, Vbg", "type" =>"t"),
"2011-09-24" => array("text" => "Hl. Rupert", "type" =>"t"),
);
Das ist nur ein Auszug, die originale Liste beinhaltet alle Termine und Feiertage von 2011 bis 2013.
Eine klare Formatierung hilft zwar bei der Lesbarkeit, aber immer noch nicht beim Schreiben bzw. Copy/Paste aus einer verfügbaren Quelle.
$feiertage = array ( "2013-01-01" => array ( "text" => "Neujahr", "type" => "f" ), "2013-01-06" => array ( "text" => "Hl. Drei Könige. Ende Weihnachtsferien", "type" => "f" ), "2013-02-12" => array ( "text" => "Faschingsdienstag", "type" => "t" ), "2013-02-13" => array ( "text" => "Aschermittwoch", "type" => "t" ), "2013-02-14" => array ( "text" => "Valentinstag", "type" => "t" ), );
Einen Ausweg und eine Lösung bietet die PHP Funktion fgetcsv . Wir legten eine CSV-Datei an, und trennten die einzelnen Spalten mit einem Tabulator.
2011-07-02 t Beginn Sommerferien f. Bgld, NÖ, Wien 2011-07-09 t Beginn Sommerferien f. Ktn, OÖ, Sbg, Stmk, Tirol, Vbg 2011-08-15 f Mariä Himmelfahrt 2011-09-03 t Ende Sommerferien für Bgld, NÖ, Wien 2011-09-10 t Ende Sommerferien f. Ktn, OÖ, Sbg, Stmk, Tirol, Vbg 2011-09-24 t Hl. Rupert
Mit einem Script wird dann das File ausgelesen und in ein Array umgewandelt.
$file = $_SERVER['DOCUMENT_ROOT'].'/calendar/feiertage.csv' ;
$handle = fopen ( $file, 'r' ) ;
$DATA = array();
while ( ($data = fgetcsv ( $handle, 1000, "\t" )) != FALSE ) {
$DATA[$data[0]]['type'] = $data[1];
$DATA[$data[0]]['text'] = $data[2];
}
print_r ( $DATA ) ;
Das Array hat nun die gewünschte Form, die Quelle ist überschaubar, leicht zu lesen und zu ergänzen.