Hello,
»» Leider bekomme ich wenn ich Error_Reporting(E_ALL); benutze keine Ausgabe.
Wie? Gar keine Ausgabe?
Nein, die Seite bleibt komplett weiß. Problem ist wenn ich den kleinen Teil von Joachim benutze kann ich dies nicht weiterverwenden (die Funktion soll später eine Tabelle bilden) und von daher brauch ich das einzelne Auslesen dieser Daten.
Wo hast Du denn den Codeschnipsel gefunden? Das war sicherlich nur eine Skizze, oder er sit nicht vollständig.
Anschließend das korrigierte und _ausgetestete_ Script:
<?php ### getcsv.php ###
error_reporting(E_ALL);
ini_set('display_errors', 1);
#------------------------------------------------------------------------------
function holeDaten($filename, &$_buffer, $maxrecsize=2048) ##function öffnen
{
$fh = fopen($filename,'r');
if (!$fh) { return 2; } ## Fehlercode 2 für "kann nicht öffnen" zurückgeben
if (!flock($fh, LOCK_SH))
{
flcose($fh);
return 5; ## Fehlercode 5 für "kann nicht sperren" zurückgeben
}
$_rec = array();
while (false !==($_rec = fgetcsv($fh, $maxrecsize, ';', '"')))
{
$_buffer[] = $_rec;
}
fclose($fh);
return 0;
}
#==============================================================================
php main
#==============================================================================
$_buffer = array();
$err_hd = holeDaten('xxx.csv',$_buffer);
if ($err_hd == 0)
{
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_buffer,1));
echo "</pre>\r\n";
}
else
{
echo "<p>Fehler beim Lesen von ".$filename.": $err_hd <p>\r\n";
}
?>
und hier ein paar Musterdaten (einfach mit Copy & Paste in eine ASCII-Datei xxx.csv schieben:
1234;2348;1388
;;;"Hallo";"Thomas"
"CSV-Test";"falsche Zeilenlänge";9999;1355
"Text mit
Umbruch und sonstigen ""Schweinereien"";";88888;"Ende"
Das Auffüllen auf eine canonische Tabelle musst Du bei CSV noch selber erledigen. Dazu musst Du aber ersteinmal wissen, welche Zeile die meisten Elemente hat, damit du die anderen Zeilen mite leeren Array-Elementen auffülen kannst und ggf. leere Zeilen entfernen kannst.
Das könnte man der Funktion hole_daten() auch noch beibringen.
Liebe Grüße aus Syburg
Tom vom Berg