brauche Webseite ideal für Vereine und Firmen
- Ad -
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! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-08-2011, 11:56
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 216
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, 12:32
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Informiere dich zuerst mal, was der zweite Parameter von PHP: fgetcsv - Manual genau macht
__________________
Drelingdo
Krabonse
Simmannamando
Mit Zitat antworten
  #3 (permalink)  
Alt 10-08-2011, 13:12
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 211
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, 13:29
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 216
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, 13:38
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
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.
__________________
Drelingdo
Krabonse
Simmannamando
Mit Zitat antworten
  #6 (permalink)  
Alt 10-08-2011, 13:59
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 216
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, 14:06
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
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, 14:13
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
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.
__________________
Drelingdo
Krabonse
Simmannamando
Mit Zitat antworten
  #9 (permalink)  
Alt 10-08-2011, 14:15
Kangarooo
 Registrierter Benutzer
Links : Onlinestatus : Kangarooo ist offline
Registriert seit: Nov 2009
Beiträge: 216
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, 14:21
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
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.
__________________
Drelingdo
Krabonse
Simmannamando
Mit Zitat antworten
  #11 (permalink)  
Alt 10-08-2011, 14:41
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 211
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 13:37
Datei einlesen sunshine-live PHP Developer Forum 9 07-02-2006 16:53
xml-Datei einlesen DietmarBr XML 3 12-10-2005 14:31
datei einlesen als result tinob PHP Developer Forum 5 21-03-2003 19:55
Datei einlesen Flashfactor PHP Developer Forum 3 04-11-2002 15: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

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:40 Uhr.