php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-08-2011, 12:56
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 225
Kangarooo kann nur auf Besserung hoffen
Standard CSV Datei einlesen

Hallo!
Ich habe eine CSV Datei in der ich diverse Sachen überpüfen muss!
Zum einen will ich rausfinden, wieviel Einträge in dem Feld $data[3] den Wert "DE" enthalten!
In der CSV sind es weit über 300 Einträge, wenn ich jedoch die Anzahl ausgebe sind es nur 60 Stück.
In der CSV befinden sich ca 9000 Einträge, weshalb ich dbei fgetcsv den Wert auf 10000 gestellt habe. Komischerweise werden umso mehr Einträge angezeigt, je niedriger ich die Zahl mache! Kann mir da jemand helfen?
Hier mein Code:

PHP-Code:
while ( ($data fgetcsv ($handle10000";")) !== FALSE ) { 
            
            if(
$data[3]=="DE")  //Nur DE auslesen
            
{
                echo 
$data[3];
            }

Mit Zitat antworten
  #2 (permalink)  
Alt 10-08-2011, 13:32
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Informiere dich zuerst mal, was der zweite Parameter von PHP: fgetcsv - Manual genau macht
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #3 (permalink)  
Alt 10-08-2011, 14:12
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Ich habe gestern auch noch einen CSV Import programmiert. Fragt mich nicht warum, aber zwischen der herkömmlichen fgetcsv Funktion und der SPL liegen Welten. Die SPL scheint mit dem SplFileObject sehr viel schneller zu laufen. Dazu dann noch die Behandlung des ermittelten Arrays aus der CSV Datei mit einem der SPL ArrayIteratoren und schon bist Du auf der sicheren Seite.

Ich würde an Deiner Stelle auf jeden Fall die SPL vorziehen.
__________________
MM Newmedia | MeinBlog
Mit Zitat antworten
  #4 (permalink)  
Alt 10-08-2011, 14:29
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 225
Kangarooo kann nur auf Besserung hoffen
Standard

Ich hab mich darüber informiert! Genau das habe ich doch auch gesagt:
"Length muss größer sein als die längste in der CSV-Datei vorhandene Zeile"
Deswegen meinte ich ja dass ich um die 9000 Zeilen habe und deshalb die Länge 10000 gewählt habe!
Kann mir da jemand helfen?
Mit Zitat antworten
  #5 (permalink)  
Alt 10-08-2011, 14:38
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Dann lies nochmal genau! Es kommt nicht drauf an, wieviele Zeilen deine CSV-Datei hat, sondern wieviele Zeichen die längste Zeile hat.

Wenn du nur 10 Zeilen in deiner Datei hast und nur eine Zeile davon z.B. 10001 Zeichen enthält, bekommst du ein Problem.

Guck dir aber auch mal den vierten Parameter an - evtl. rührt auch daher dein Problem.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #6 (permalink)  
Alt 10-08-2011, 14:59
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 225
Kangarooo kann nur auf Besserung hoffen
Standard

Sorry, aber ich chekcs absolut nicht!!
Also hier mal eine Zeile aus der CSV:
PHP-Code:
1220;1220;;DE;1444;München;;Bahnhof;;11233;533212;Bayern;27;True;227
Insgesamt habe ich davon über 900 Zeilen mit diversen Inhalten.
Und jetzt bedeutet der zweite Paramter wieviel Zeichen ich in eienr Zeile habe?? Sorry, aber ich bin gerade total raus!
Mit Zitat antworten
  #7 (permalink)  
Alt 10-08-2011, 15:06
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kangarooo Beitrag anzeigen
Und jetzt bedeutet der zweite Paramter wieviel Zeichen ich in eienr Zeile habe??
PHP: fgetcsv - Manual

Das hier ist kein Manual-Vorleseservice, also informiere dich bitte selber, wenn du programmieren willst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 10-08-2011, 15:13
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Wie soll ich es genauer beschreiben, als es im Manual steht?

fgetcsv will wissen, wie lange eine Zeile maximal sein kann. Du kannst dabei einen Wert eintragen, bei dem du dir z.B. absolut sicher bist, dass keine Zeile in deiner Datei länger sein wird. Du musst nur sicherstellen, dass du keinen Wert angibst, der kleiner als die längste Zeile in deiner Datei ist. Eine Möglichkeit ist z.B. auch, die Größe der Datei auszulesen und einfach diesen Wert zu benutzen.

Aufgrund deiner geposteten Beispiel-Zeile gehe ich aber eh davon aus, dass dein Problem nicht daher rührt. Da deine Datei kein enclosure-Zeichen benutzt scheidet auch das aus.

Ich würde mir einfach mal in deiner Schleife $data mit var_dump() ausgeben lassen (ausserhalb deiner if-Abfrage) und schauen, ob in dem Array auch wirklich jedesmal das drinsteht was du erwartest. Ist zwar bei 900 Datensätzen evtl. mit etwas Kopfweh verbunden aber einen besseren Tipp hab ich auf Anhieb auch nicht mehr parat.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #9 (permalink)  
Alt 10-08-2011, 15:15
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 225
Kangarooo kann nur auf Besserung hoffen
Standard

Alles klar, vielen Dank! Mittlerweile habe ich glaube ich auch festgestellt dass etwas mit der CSV Datei nicht stimmt! Ich habe jetzt mal eine andere benutzt und mit der funktioniert es einwandfrei mit der length!! Trotzdem VIELEN DANK für Deine Hilfe!!!
Mit Zitat antworten
  #10 (permalink)  
Alt 10-08-2011, 15:21
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von ezkimo Beitrag anzeigen
I...Fragt mich nicht warum, aber zwischen der herkömmlichen fgetcsv Funktion und der SPL liegen Welten...
Hast du beim normalen fgetcsv den length-Parameter weggelassen? Das Manual sagt, dass es in dem Fall etwas langsamer ist.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #11 (permalink)  
Alt 10-08-2011, 15:41
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Quetschi Beitrag anzeigen
Hast du beim normalen fgetcsv den length-Parameter weggelassen? Das Manual sagt, dass es in dem Fall etwas langsamer ist.
Nein, der length-Parameter war gesetzt und ausreichend. Bei der SPL fällt der length Parameter von vornherein weg.

Kurzes Beispiel für die SPL
PHP-Code:
$file = new SplFileObject("meineDaten.csv");
$data = new ArrayObject();
$data->setIteratorClass('RecursiveArrayIterator');

// CSv Daten ermitteln
while (!$file->eof()) {
    
$data[] = $file->fgetcsv(";"));
}

// Array durchlaufen
$iterator $data->getIterator();
while (
$iterator->valid()) {
    if (
$iterator->hasChildren()) {
        foreach (
$iterator->getChildren() as $key => $value) {
            
// Mache irgendwas mit meinen Datensätzen
        
}
    }
    
$iterator->next();

Eigentlich recht simpel.
__________________
MM Newmedia | MeinBlog
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
TXT-Datei einlesen werny PHP Developer Forum 4 12-02-2009 14:37
Datei einlesen sunshine-live PHP Developer Forum 9 07-02-2006 17:53
xml-Datei einlesen DietmarBr XML 3 12-10-2005 15:31
datei einlesen als result tinob PHP Developer Forum 5 21-03-2003 20:55
Datei einlesen Flashfactor PHP Developer Forum 3 04-11-2002 16:39

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:44 Uhr.