Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Daten aus einer Csv-datei lesen

Hi an alle,

ich bin am verzweifeln, habe das ganze Board durchsucht und alle Links besucht und alles bei meinem Script getestet.
Aber es will bei mir nicht funktionieren, wollte schon den Rechner aus dem Fenster schmeissen.
Wir haben hier eine Domaine bei 1und1, dort soll eine Datei im CSV-Format ausgelesen werden und in die Datenbank eingefügt werden, wenn die Daten schon vorhanden sind, dann soll ein update erfolgen und wenn nicht, dann ein insert.

Hier mein Script
$handle = fopen ("Daten.csv","r");
echo("$handle <br>");
if(!$handle) die("Fehler in Datei Öffnen!!<br>");
$datendatei = File($handle);
$zaehler=0;
while($datendatei[$zaehler])
{
$input = $datendatei[$zaehler];
$trenn = explode(";",$input);
if($trenn[1] == 1)
{
$zahl=1;
$laufnr=0;
while($db->data($db->query("Select * FROM `seg1` WHERE `laufnr` = '$zahl'") != NULL))
{
$zeile=$db->data($db->query("Select * FROM `seg1` WHERE `laufnr` = '$zahl'"));
if($trenn[0]==$zeile[1])
{
if($trenn[0]!= NULL)
$db->query("UPDATE `seg1` SET `stt_nr` = '$trenn[0]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[2]!= NULL)
$db->query("UPDATE `seg1` SET `container` = '$trenn[2]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[3]!= NULL)
$db->query("UPDATE `seg1` SET `container_art` = '$trenn[3]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[4]!= NULL)
$db->query("UPDATE `seg1` SET `groesse_text` = '$trenn[4]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[5]!= NULL)
$db->query("UPDATE `seg1` SET `container_lief` = '$trenn[5]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[6]!= NULL)
$db->query("UPDATE `seg1` SET `anz_pieces` = '$trenn[6]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[7]!= NULL)
$db->query("UPDATE `seg1` SET `gew_einheit` = '$trenn[7]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[8]!= NULL)
$db->query("UPDATE `seg1` SET `gew_tara` = '$trenn[8]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[9]!= NULL)
$db->query("UPDATE `seg1` SET `siegel_nr` = '$trenn[9]' WHERE `laufnr` = '$zahl' LIMIT 1");
if($trenn[10]!= NULL)
$db->query("UPDATE `seg1` SET `siegel` = '$trenn[10]' WHERE `laufnr` = '$zahl' LIMIT 1");
break;
}
else
{
$zahl++;
$laufnr=$zahl;
}
}
if($laufnr!=0)
{
$db->query("INSERT INTO `seg1` ( `laufnr` , `stt_nr` , `container` , `container_art` , `groesse_text` , `container_lief` , `anz_pieces` , `gew_einheit` , `gew_tara` , `siegel_nr` , `siegel`)
VALUES ('laufnr','$trenn[0]', '$trenn[2]', '$trenn[3]', '$trenn[4]', '$trenn[5]', '$trenn[6]', '$trenn[7]', '$trenn[8]', '$trenn[9]', '$trenn[10]')");
}
}
usw.

Hier gehts zum Orginal Eintrag "Daten aus einer Csv-datei lesen" im Forum

Antworten

Hi
1) Warum benutzt Du nicht die dafür vorgesehene csv funktion:
$delimiter = ";";
$fp = fopen($file,"r");

// Datei einlesen
while($zeile = fgetcsv($fp,500,$delimiter)) array_push($result, $zeile);

// Datei schließen
fclose($fp);

2) Wenn du MYSQL benutzt gibt es dort meines wissens nach auch eine eigene import csv funktion !!

Es wäre zudem hilfreich wenn du sagen würdest was denn nicht funktioniert !!!!

Gruß


2.

Sorry, es funktioniert der fopen Befehl nicht, in $handle steht nichts drin, er geht immer in die IF-schleife, der Fehlermeldung rein.

Das mit der Funktion geht das auch bei fünf Tabellen in der Datenbank? in jeder Zeile der CSV-Datei steht etwas für eine andere Tabelle.

1. Tabelle Daten; ......................................
2. Tabelle Daten; ......................................
3. Tabelle Daten; ......................................
4. Tabelle Daten; ......................................
4. Tabelle Daten; ......................................
4. Tabelle Daten; ......................................
5. Tabelle Daten; ......................................
5. Tabelle Daten; ......................................
5. Tabelle Daten; ......................................
5. Tabelle Daten; ......................................
1. Tabelle Daten; ......................................
2. Tabelle Daten; ......................................
3. Tabelle Daten; ......................................
4. Tabelle Daten; ......................................
4. Tabelle Daten; ......................................
4. Tabelle Daten; ......................................

Danke Dir für Deine Antwort Thor


3.

schonmal das durchgelesen?

http://de3.php.net/manual/de/function.fgetcsv.php


4.

Ja habe ich durchgeklesen, ich habe schon aufgehört zu zählen wie viele Seiten hier im Forum und im gesamten Netz. Das "fopen macht er bei mir nicht und ich weiss nicht warum" selbst mit der Hilfe von 1und1 wegen der SafeModegeschichte, was ich mir ja noch als Grund denken könnte.


5.

alle rechte richtig vergeben?

aus der DOKU zu fopen:

/* DOKU */
Wenn Sie Probleme mit dem Lesen oder Schreiben von Dateien haben und PHP als Servermodul benutzen, stellen Sie zunächst sicher, dass die Dateien und Verzeichnisse die Sie benutzen wollen auch für den Server-Prozess zugänglich sind (Rechtevergabe).

Achten Sie auf Windows-Systemen darauf, dass Sie als Verzeichnistrenner normale Schrägstriche '/' benutzen um plattformunabhängig programmieren zu können. Sollten Sie dennoch Backslashes verwenden, vergessen Sie nicht diese zu escapen '\\'


6.

und wenn das fopen nicht funktioniert, ist es verwunderlich, dass file() zurechtkommt.


7.

Hallo,

wo soll die csv-Importfunktion von mySql sein?

Ich habe sie gesucht und nicht gefunden?

Gruß
:-)


8.

[color="#0000FF"]
Menno ist hier keiner mit einer guten Antwort, ich bin ein Frischling und dachte hier sitzen leute mit Köpfchen für solche Dinge, welche etwas von den Geheimnissen abgeben, natürlich kann ich ersteinmal sagen fopen funktioniert nicht, ob File funktioniert kann ich danach sagen, wenn die Datei geöffnet ist, selbst bei der CSV-funktion brauche ich fopen.

gruß
[/color]

:\


9.

also fopen sollte bei 1und1 aber gehen... oder geht php etwa generell nicht bei deinem tarif :-)
http://faq.1und1.de/hosting/skripte_datenbanken/php/8.html


10.

Der Tarif gibt es her und es funktioniert trotzdem nicht


11.

Ist der Filename HAARGENAU so geschrieben ? Probiere es mal komplett klein (auch Datei umbenennen)...


Hier gehts zum Orginal Eintrag "Daten aus einer Csv-datei lesen" im Forum
 
phpforum.de | Impressum | Handy Bundles