Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

CSV Dateien auslesen geht bei Datei 1 und bei Datei 2 nicht.....

Frage Entwicklung PHP

Mitglied: hartmann

hartmann (Level 1) - Jetzt verbinden

15.10.2009, aktualisiert 19.10.2009, 5060 Aufrufe, 7 Kommentare

Hallo,
ich habe mehrere CSV Dateien die ich täglich mit PHP einlesen und nach bestimmten Werten suchen muss.
Bisher hat alles Wunderbar funktioniert aber seit ca 2-3 Tagen werden 2 von 8 Dateien nicht mehr richtig eingelesen. Ich poste am besten erstmal mal den Code:

01.
$dateien[0] = "datei01.csv";   
02.
$dateien[1] = "datei02.csv";   
03.
$dateien[2] = "datei03.csv";   
04.
$dateien[3] = "datei04.csv";   
05.
$dateien[4] = "datei05.csv";   
06.
$dateien[5] = "datei06.csv";   
07.
$dateien[6] = "datei07.csv";   
08.
$dateien[7] = "datei08.csv";   
09.
$counter = 0; 
10.
 
11.
$fp = @fopen($dateien[$counter], "r") or die ("Kann Datei nicht lesen.");  
12.
 
13.
while($array = fgetcsv($fp, 1000, ",")) 
14.
{  
15.
 
16.
     // Hier werden die geschten Daten mit mehreren IF- Abfragen rausgesucht 
17.
     // Bei Datei 02 und 03 bekomme ich nur ein leeres Array zurück   
18.
 
19.
     $counter++; 
20.
}

Bei Datei 02 und 03 bekomme ich nur ein leeres Array zurück. Die Dateien sind Komma getrennt und vom Aufbau zu 100% identisch. Das hat bisher immer Perfekt funktioniert nur seit ein paar Tagen werden diese 2 Dateien nicht mehr richtig gelesen.
Wenn ich die CSV Dateien in einen Editor öffne liegen diese auch im richtigen Format mit Inhalt vor, nur PHP kommt nicht an den Inhalt ran.

Ich hoffe jemand kann mir hier weiterhelfen, ich bin nämlich im moment ziemlich Ratlos .... falls mehrere Informationen benötigt werden kann ich diese jederzeit noch Posten.
Mitglied: Tommy70
15.10.2009 um 07:43 Uhr
Hallo,

um mal mit Garantie sicherzustellen dass die Dateien identisch sind.
Lässt sich Datei02 einlesen wenn du sie in Datei01 umbenennst und Datei01 in Datei02?

Gruß
Tom
Bitte warten ..
Mitglied: maretz
15.10.2009 um 07:51 Uhr
Moin,

gibt es denn auch ne Fehlermeldung (ggf. auch in den Log-Files?). Hat die Datei die entsprechenden Rechte? Wie sieht es mit Zeilen-Ende-Kennungen aus? (z.B. eine Datei im Unix, die andere im DOS-Format?)
Bitte warten ..
Mitglied: nxclass
15.10.2009 um 08:15 Uhr
evtl. ist eine Datenzeile länger als 1000 Zeichen ?
oder in einem Wert steht ein Komma, welches den Parser durcheinander bringt ?
Bitte warten ..
Mitglied: hartmann
15.10.2009 um 08:38 Uhr
erstmal danke für die schnelle Antworten.
Fehlermeldungen sind keine erschienen und Rechte der Dateien sind 100% identisch.

Habe die Dateien 01 und 02 jetzt umbenannt und alles ist perfekt gelaufen.

Dann habe ich diese Dateien wieder umbenannt und nochmal ausprobiert und es funktioniert jetzt auch wieder einwandfrei.

Das Problem hat sich jetzt also erstmal gelöst, aber woran könnte das liegen das es nach dem umbenennen jetzt wieder normal funktioniert ? Habe die Dateien 2 mal umbenannt jetzt ist alles wieder wie zu Beginn aber es geht jetzt perfekt.

Habt ihr da vielleicht noch eine Idee?
Bitte warten ..
Mitglied: bbyszio
15.10.2009 um 09:09 Uhr
Moin,
also wenn ich dein Script richtig verstehe, öffnest du nur die erste Datei, da dein fopen ausserhalb der Schleife liegt. Ich würde das fopen in der Schleife machen und direkt vor dem $counter++ die Datei wieder schließen.


Gruß
Bodo
Bitte warten ..
Mitglied: nxclass
15.10.2009 um 09:37 Uhr
Kann es sein das evtl. ein anderer Prozess gerade auf die Datei zugegriffen und diese blockiert hat ? (AV o. ein Editor ?
Wie werden die CSV Dateien erstellt ? - evtl. waren die 2 Dateien noch nicht geschlossen und somit leer ?

PS: Durch reiben, ist meine Glaskugel schon ganz heiß - muss sie jetzt erst mal abkühlen lassen)
Bitte warten ..
Mitglied: hartmann
15.10.2009 um 10:25 Uhr
Hatte das fopen schon in einer Schleife das ist mir durch das kopieren wohl verloren gegangen, so sieht das script aus.

01.
$dateien[0] = "datei01.csv";   
02.
$dateien[1] = "datei02.csv";   
03.
$dateien[2] = "datei03.csv";   
04.
$dateien[3] = "datei04.csv";   
05.
$dateien[4] = "datei05.csv";   
06.
$dateien[5] = "datei06.csv";   
07.
$dateien[6] = "datei07.csv";   
08.
$dateien[7] = "datei08.csv";   
09.
$counter = 0; 
10.
 
11.
while($counter < count($dateien)) 
12.
13.
$fp = @fopen($dateien[$counter], "r") or die ("Kann Datei nicht lesen.");  
14.
 
15.
while($array = fgetcsv($fp, 1000, ",")) 
16.
{  
17.
 
18.
     // Abfragen 
19.
 
20.
21.
    $counter++; 
22.
}

@nxclass Der Tipp das die Dateien evtl noch nicht fertig erstellt bzw. noch in Verwendung waren könnte ich mir gut vorstellen da die CSV dateien von Excel mit einen VB Script erstellt werden und diese Excel Datei häufig von von verschiedenen Usern bearbeitet wird. Ich werde das mal beobachten.

Thx an alle nochmal für die schnelle Hilfe.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Batch & Shell
gelöst 2 Csv -Dateien zum Teil zusammenfügen (6)

Frage von Piotrney zum Thema Batch & Shell ...

Batch & Shell
gelöst CSV Dateien auswerten mit Script (8)

Frage von Crank69 zum Thema Batch & Shell ...

Batch & Shell
gelöst 2 CSV Dateien per Powershell vergleichen (2)

Frage von Berlin62 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...