Wer das löst, ist ein Genie :)

also ich ahbe mich nun total aufgeregt… Aber vielleicht könnt ihr mir hier helfen. Kopiere einfacha lles rein :smile:

DAS FILE: Import.class.php

<?php /*
\* Dateinamen: Import.class.php \* \* Beschreibung: Importiert die Felder eines Files. \* Bevor es das tun kann, muss es die Felder erkennen und sie aufteilen. \* \* Autor: Mathis Furrer \* Flavio Sadeghi \* Erstelldatum: 21.10.03 \* letzte Änderung: 24.10.03 \*/ class import{ var $\_aFile; var $trennzeichen; var $titel; /\*\* \* konstruktor - liest das ganze übergeben array in die verwaltung \* \*/ function import($trennzeichen){ die("Funktion muss überschrieben werden. (". \_\_FILE\_\_ .":". \_\_LINE\_\_ .")"); } function openFile($filepfad){ die("Funktion muss überschrieben werden. (". \_\_FILE\_\_ .":". \_\_LINE\_\_ .")"); } /\*\* \* schliesst die datei \* \*/ function closeFile(){ die("Funktion muss überschrieben werden. (". \_\_FILE\_\_ .":". \_\_LINE\_\_ .")"); } /\*\* \* gibt die titel der datei als array zurück \* \*/ function getTitel(){ die("Funktion muss überschrieben werden. (". \_\_FILE\_\_ .":". \_\_LINE\_\_ .")"); } /\*\* \* gibt die nächste Zeile als Array zurück \* \*/ function fetch(){ die("Funktion muss überschrieben werden. (". \_\_FILE\_\_ .":". \_\_LINE\_\_ .")"); } } class import\_txt extends import{ /\*\* \* konstruktor - liest das ganze übergeben array in die verwaltung \* \*/ function import\_txt($trennzeichen = ";"){ $this-\>trennzeichen = $trennzeichen; } function openFile($filepfad){ if(file\_exists($filepfad)){ $this-\>\_aFile = fopen ($filepfad, "r"); if($this-\>\_aFile){ $this-\>getTitel(); return true; } return false; }else{ // ..error abhandlung } } /\*\* \* schliesst die datei \* \*/ function closeFile(){ // Datei schliessen. if($this-\>\_aFile){ fclose($this-\>\_aFile); } return true; } /\*\* \* gibt die titel der datei als array zurück \* \*/ function getTitel(){ if(!$this-\>titel){ $this-\>titel = explode ($this-\>trennzeichen, fgets ($this-\>\_aFile)); } return $this-\>titel; } /\*\* \* gibt die nächste Zeile als Array zurück \* \*/ function fetch(){ if(!feof($this-\>\_aFile)) { $element = fgets($this-\>\_aFile); return explode ($this-\>trennzeichen, $element); } return false; } } ?\> DIE TEST FILES: test.php und test.txt <?php /*
\* Dateinamen: test.php \* \* Beschreibung: File um zu testen ob alles richtig abläuft. \* Import.class.php (aktiv) \* \* \* Warum dieses Modul?: Damit man weiss das keine Fehler mehr da sind :smile: \* Autor: Flavio Sadeghi \* Mathis FUrrer \* Erstelldatum: - \* letzte Änderung: 24.10.03 \*/ include "local.inc.php"; // Beginn Test: Import.class $testarray = array(); $testarray[0] = array("ID","Name","Vorname"); $testarray[1] = array("1","Furrer1","Mathis1"); $testarray[2] = array("2","Furrer2","Mathis2"); $testarray[3] = array("3","Furrer3","Mathis3"); $testarray[4] = array("4","Furrer4","Mathis4"); include "Import.class.php"; $filepfad = "test.txt"; $oImp = new Import\_txt(); if(!$oImp-\>openFile($filepfad)){ die("Datei konnte nicht geöffnet werden"); }else{ $nzeile = 0; echo " TITEL: "; $atitel = $oImp-\>getTitel(); if(is\_array($asd = array\_diff($atitel,$testarray[$nzeile]))){ echo " TITEL: "; print\_r($atitel); echo " testarr: "; print\_r($testarray[$nzeile]); echo " diff: "; print\_r($asd); } while($azeile = $oImp-\>fetch()){ $nzeile++; if(is\_array($asd = array\_diff($azeile,$testarray[$nzeile]))){ echo " TITEL: "; print\_r($azeile); echo " testarr: "; print\_r($testarray[$nzeile]); echo " diff: "; print\_r($asd); } } $oImp-\>closeFile(); } ?\> --------------- TEST.TXT ID;Name;Vorname 1;Furrer1;Mathis1 2;Furrer2;Mathis2 3;Furrer3;Mathis3 4;Furrer4;Mathis4 ---------------- OK nun das File test.php vergleicht alles. Wenn etwas nicht gleich ist, wird angezeigt was nicht gleich ist. Es sollte alles gleich sein... Hier die ausgabe: TITEL: TITEL: Array ( [0] =\> ID [1] =\> Name [2] =\> Vorname ) testarr: Array ( [0] =\> ID [1] =\> Name [2] =\> Vorname ) diff: Array ( [2] =\> Vorname ) TITEL: Array ( [0] =\> 1 [1] =\> Furrer1 [2] =\> Mathis1 ) testarr: Array ( [0] =\> 1 [1] =\> Furrer1 [2] =\> Mathis1 ) diff: Array ( [2] =\> Mathis1 ) TITEL: Array ( [0] =\> 2 [1] =\> Furrer2 [2] =\> Mathis2 ) testarr: Array ( [0] =\> 2 [1] =\> Furrer2 [2] =\> Mathis2 ) diff: Array ( [2] =\> Mathis2 ) TITEL: Array ( [0] =\> 3 [1] =\> Furrer3 [2] =\> Mathis3 ) testarr: Array ( [0] =\> 3 [1] =\> Furrer3 [2] =\> Mathis3 ) diff: Array ( [2] =\> Mathis3 ) TITEL: Array ( [0] =\> 4 [1] =\> Furrer4 [2] =\> Mathis4 ) testarr: Array ( [0] =\> 4 [1] =\> Furrer4 [2] =\> Mathis4 ) diff: Array ( ) MAn bemerkt. Immer das letzte, gibt er als Diff an! WARUM???? ok denke jetzt habt ihr alle etwas zum kauen :smile:)) Gruss Celeborn

ich bin keines
ähmm sorry ist nicht die Antwort auf deine Frage, aber kennst du die
Funktion fgetcsv?
http://www.php-center.de/de-html-manual/function.fge…

Gruss Jan

kein Genie, aber die Lösung :wink:
Hallo hier die lösung, du musst die einzelnen einträge aus der test.txt noch durch trim() jagen, wegen unsichtbarem zeichen am ende, wegen zeilenumbruch.
Mit folgender modifizierter Funktion fetch() funktionierts.

MFG Thomas

/**
* gibt die nächste Zeile als Array zurück
*
*/
function fetch(){

//neues array als zwischenpuffer
$new_array = array();

if(!feof($this->_aFile)) {
$element = fgets($this->_aFile);
// eigentlich würde das letzte element reichen, aber jagen wir alle elemente durch
// kannst ja mit end() arbeiten um nur das letzte durch trim zu jagen
foreach (explode($this->trennzeichen, $element) as $new_element ){
// jedes elemnt wird getrimt in das zwischenpufer array geschrieben
array_push($new_array,trim($new_element));
}
// puffer wird ausgegeben
return $new_array;
}
return false;
}

Danke für die Antworten :smile:
Dachte schon es wäre zu blöd den ganzen Quelltext zu schreiben! Aber wusste nicht wie erklären :smile:

gruss Cele