php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.10.2011, 10:10  
Benutzer
 
Registriert seit: 18.10.2011
Beiträge: 57
PHP-Kenntnisse:
Anfänger
Dark Decipio befindet sich auf einem aufstrebenden Ast
Standard

Hab heute morgen ein bisschen rumgebastelt. Jetzt habe ich 2 Fragen zu fgetcsv.
Bei der 2. angabe in der Klammer, die Länge. Welche Länge ist hier gemeint? Ich kann die irgendwie nicht zuordnen...
2. Jedes Feld wird bei mir mit ; getrennt. Dies klappt auch. Jedoch, wenn es einen Zeilenumbruch gibt, also wenn es eine neue Zeile gibt, dann wird die letzte Zelle nicht von der ersen Zelle der neuen Zeile getrennt. Wie kann ich dies ersellen?



Gerade noch ein weiteres Problem:

Ich habe while ( $row = fgetcsv ( $fp, 10000, '=' ) ) angegeben, dass jede Zeile durch ein = getrennt werden soll. Jedoch wird es mit einem ; getrennt.
Danke für eure Hilfe!

Geändert von Dark Decipio (26.10.2011 um 11:02 Uhr).
Dark Decipio ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.10.2011, 11:16  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

diese Länge bei fgetcsv ist der Puffer - das ist die maximale Anzahl Zeichen, die fgetcsv liest, bevor es abbricht - es bricht aber normalerweise ab, wenn der Zeilenumbruch erreicht wird -
Length muss daher größer sein als die längste Zeile, um zuverlässig das jeweilige Zeilenende zu erkennen

allerdings sollte dein Zweiter Fehler nicht auftreten, weil ein Zeilenumbruch auch von fgetcsv erkannt wird und dieses abbricht (liest nicht weiter) -

prüfe mal bitte mit var_dump die Daten, die dein Script dort liest

für das letzte - es gibt kein explizites Zeichen für neue Zeile, sondern fgetcsv erwartet den normalen Zeilenumbruch (\n) - es kommt auch mit Windows-Umbruch klar, weil der wiederum \n enthält
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.10.2011, 11:35  
Benutzer
 
Registriert seit: 18.10.2011
Beiträge: 57
PHP-Kenntnisse:
Anfänger
Dark Decipio befindet sich auf einem aufstrebenden Ast
Standard

Code:
$handle = fopen ("../upload/import.csv","r");  
print var_dump($handle);
Das Resultat lautet: "resource(3) of type (Unknown)"


Ich galube, ich weis jetzt weshalb die Zellen mit ; getrennt werden.

Die .xlsx Datei speichere ich von Hand in eine -csv Datei um (CSV(Trennzeichen-getrennt)). Wenn ich diese CSV Datei mit dem Editor öffne, werden die einzelnen Zellen mit einem ; getrennt.

Wenn ich dann das Beispiel auf php.net verwende, sollte es mir bei folgendem Code:
Code:
print "<p> $num fields in line $row: <br>\n";
eigentlich die Anzahl Zellen pro Zeile (16) angeben.
Jedoch erkennt es die gesamte Zeile als eine Zelle, also lautet das Resultat:
"1 fields in line 1"...

Ich verstehe nicht ganz weshalb er die Zeile als eine Zelle erkennt
Dark Decipio ist offline   Mit Zitat antworten
Alt 26.10.2011, 12:58  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

na weil du das Trennzeichen nicht korrekt angegeben hast - wenn bei dir die fgetcsv immer noch mit "=" als Trennzeichen arbeitet, aber in der Datei Semikolons stehen .. dann nimm halt die Semikolons auch bei fgetcsv
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.10.2011, 13:13  
Benutzer
 
Registriert seit: 18.10.2011
Beiträge: 57
PHP-Kenntnisse:
Anfänger
Dark Decipio befindet sich auf einem aufstrebenden Ast
Standard

Also in der Datei arbeite ich eigenltich nicht mit semikolons... es übernimmt die automatisch wenn ich die csv mit dem editor öffne... aber in der csv trage ich die daten in einzelne zellen.
Und wenn ich dann die ausgelesenen Daten brauchen will, sollte ich sie doch mit explode nach dem Trennzeichen splioten und dann mit ihnen arbeiten können oder...? und da ich im inhalt auch semikolons habe, dann wird das mit dem explode schwierig...
Dark Decipio ist offline   Mit Zitat antworten
Alt 26.10.2011, 13:29  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

dann schau doch mal in deine CSV mit nem normalen Text-Editor rein (zur Not auch der Windows-Editor) ...

wenn die CSV mit Excel erstellt wurde - dann normalerweise mit Semikolon als Trennzeichen und " (Doppel-Quote) als Kapselungszeichen. ... - eventuell noch irgendein Zeichen als Escape-Zeichen ....

die kannst du alle bei fgetcsv auch angeben - im Idealfall liest fgetcsv deine CSV vollständig ein - teilt sie in einzelne Datenworte auf - und lässt dabei Bezeichnungen wie

Gaststätte "Zur Weide"

intakt (inklusive der gewünschten Quotes)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.10.2011, 13:39  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ich würde den Aufbau der CSV nochmal überdenken, dann wäre der Thread vermutlich nach der ersten Seite bereits erledigt...

Zitat:
aber in der csv trage ich die daten in einzelne zellen
...heißt für mich, DU bist verantwortlich für den strukturierten Aufbau der Datei und kannst Trennzeichen selbst wählen!

Zitat:
und da ich im inhalt auch semikolons habe
...dann macht das als Trennzeichen keinen Sinn...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 26.10.2011, 14:02  
Benutzer
 
Registriert seit: 18.10.2011
Beiträge: 57
PHP-Kenntnisse:
Anfänger
Dark Decipio befindet sich auf einem aufstrebenden Ast
Standard

nein, die csv datei erstelle ich nicht selbst. ich erhalte eine .iqy datei, die wird dann als xlsx datei gespeichert und mittels excel zu einer csv datei geändert...


Leider habe ich jetzt von meinem Vorgesetzten erfahren, dass sie den Import nicht mehr benötigen, da sie alles neu erstellen und von 0 beginnen.

Tut mir Leid für die verschwendete Zeit und Mühe und danke euch VIEEEEEEEl Mals!!!!!!
Dark Decipio ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder aus Spalten in Zeilen anzeigen Typ15 PHP Tipps 2010 5 31.03.2010 21:46
[Erledigt] MySQL count(distinct) über mehrere Spalten mit GROUP BY Problem DJwebdesign Datenbanken 6 06.03.2010 16:05
Mysql: abfrage über 2 spalten luks2com PHP Tipps 2010 10 28.01.2010 15:28
Group by über 10 spalten t10 Datenbanken 6 18.01.2010 18:55
[Erledigt] INSERT ... SELECT - nicht alle Spalten aus dem Select benutzen? kip Datenbanken 4 01.09.2009 13:06
Projekt: User über Intranetpage erstellen, auf einen VoIP-Server beta1234 PHP Tipps 2009 2 22.07.2009 13:21
Datenbankabfrage über Suchfunktion SanktFlorian Datenbanken 6 09.07.2009 16:15
messwerte über php aus text dokument mit spalten auslesen? holger456 PHP Tipps 2009 3 01.04.2009 10:45
[Erledigt] Einzelnen DB-Eintrag über ID anzeigen Knutschi PHP Tipps 2009 6 26.03.2009 09:56
Doppelte Einträge in tabelle über mehrere Spalten anzeigen PHP Tipps 2005-2 8 22.07.2005 09:29
Mehre Abfragen über Spalten mit LIKE PHP Tipps 2005-2 19 13.07.2005 00:10
suche über zwei oder mehr spalten Datenbanken 1 28.11.2004 09:51
Javascript über Javascript erstellen HTML, Usability und Barrierefreiheit 2 19.11.2004 18:02
[Erledigt] Auto Increment über 2 Spalten Datenbanken 2 21.09.2004 19:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fget csv distinc, fgetcsv() spalten zuweisen, fgetcsv bricht bei sonderzeichen ab

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum