Moin!
Für eine Terminverwaltung brauchst du zwingend eine Datenbank (MYSQL)
Naja. Vor einer solchen Antwort sollte man einen Blick auf die Menge der zu erwartenden Daten werfen. Das genannte Beispiel sollte nach dem Motto "Kleines Problem - kleine Lösung!" mit CSV ganz gut zu händeln sein. Von "zwingend" kann hier also keine Rede sein.
Selbst einen Array oder Hash kann man direkt schreiben und lesen. Und zwar ohne jede Serialisierung:
<?php
#
## main
#
// Beispielarray:
$arArray = array (1, 2, array ("a", "b", "c"));
// Funktionsaufruf zum Schreiben
File_Put_Array('test.data', $arArray) or die ('Array konnte nicht in Datei test.data gespeichert werden.');
// Nur für das Beispiel:
print "hat geklappt, TestArray wird gelöscht\n\n";
unset ($arArray);
// Funktionsaufruf zum Lesen
$arArray=File_Get_Array('test.data');
var_dump ($arArray);
print "\n"; exit;
#
## functions
#
function File_Put_Array($FileName, $ar) {
return file_put_contents($FileName , '<?php $ar=' . var_export($ar, true) . ';');
}
function File_Get_Array($FileName) {
include $FileName;
return $ar;
}
?>
Aber auch mit Serialisierung:
<?php
#
## main
#
// Beispielarray:
$arArray = array (1, 2, array ("a", "b", "c"));
// Funktionsaufruf zum Schreiben
File_Put_Array_Serialized('test.data', $arArray) or die ('Array konnte nicht in Datei test.data gespeichert werden.');
// Nur für das Beispiel:
print "hat geklappt, TestArray wird gelöscht\n\n";
unset ($arArray);
// Funktionsaufruf zum Lesen
$arArray=File_Get_Array_Serialized('test.data');
var_dump ($arArray);
print "\n"; exit;
#
## functions
#
function File_Put_Array_Serialized($FileName, $ar) {
return file_put_contents($FileName ,serialize($ar));
}
function File_Get_Array_Serialized($FileName) {
if (! is_file($FileName)) { die ("Fatal: Die Datei $FileName gibt es nicht."); }
if (! is_readable($FileName)) { die ("Fatal: Die Datei $FileName ist nicht lesbar."); }
return unserialize(file_get_contents($FileName));
}
?>
Größere Datenmengen könne hierbei sogar noch mit bzcompress oder gzcompress (Voraussetzung:zlib) komprimiert werden. Das Beispiel mit zlib und gzcompress:
<?php
#
## main
#
// Beispielarray:
$arArray = array (1, 2, array ("a", "b", "c"));
// Funktionsaufruf zum Schreiben
File_Put_Array_Serialized_Compressed('test.data', $arArray) or die ('Array konnte nicht in Datei test.data gespeichert werden.');
// Nur für das Beispiel:
print "hat geklappt, TestArray wird gelöscht\n\n";
unset ($arArray);
// Funktionsaufruf zum Lesen
$arArray=File_Get_Array_Serialized_Compressed('test.data');
var_dump ($arArray);
print "\n"; exit;
#
## functions
#
function File_Put_Array_Serialized_Compressed($FileName, $ar) {
return file_put_contents($FileName ,gzcompress(serialize($ar)));
}
function File_Get_Array_Serialized_Compressed($FileName) {
if (! is_file($FileName)) { die ("Fatal: Die Datei $FileName gibt es nicht."); }
if (! is_readable($FileName)) { die ("Fatal: Die Datei $FileName ist nicht lesbar."); }
return unserialize(gzuncompress(file_get_contents($FileName)));
}
?>
Bitte beachten: Das Komprimieren lohnt nur bei großen Datenmengen (~ 10k und größer), ansonsten das Komprimieren/Dekomprimieren länger dauert und mehr Rechenzeit in Anspruch nimmt als das Schreiben der größeren Datei. Wo genau die Grenze liegt ist von den Daten und natürlich der Maschine anhängig.
Die Beispiele sind getestet.
fastix