Data-file Trennzeichen - Die Zweite
Mfrank
- php
Hallo
Ich lese ein txt-file zeilenweise aus... kein Problem soweit.
Das file ist so aufgebaut:
***************************************
eins;Anton;Rüsselweg;Musterstadt
zwei;Berta;Lochgasse;Musterdorf
drei;Cleopatra;Auf der Pyramide;Gizeh
...
***************************************
Wie gesagt: das zeilenweise Auslesen ist nicht das Problem, aber kann ich die durch ";" getrennten Werte irgendwie an verschiedene Variablen übergeben ? ...also $nummer,$name,$strasse,$ort ??
Wenn "ja" - WIE ?
Auf meinen letzten post kam der Tip mir mal explode() und list() anzugucken... aber ich versteh das einfach nicht ! :(
Kann mir das bitte, bitte mal einer anhand eines kommentierten Beispielquelltextes gaaaanz langsam erklären ????
Danke !!!!
(der verzweifelnde) Frank
bleib in Deinem Thread </?m=153485&t=28340> !
hi
Ich lese ein txt-file zeilenweise aus... kein Problem soweit.
Das file ist so aufgebaut:
***************************************
eins;Anton;Rüsselweg;Musterstadt
zwei;Berta;Lochgasse;Musterdorf
drei;Cleopatra;Auf der Pyramide;Gizeh
...
***************************************
Wie gesagt: das zeilenweise Auslesen ist nicht das Problem, aber kann ich die durch ";" getrennten Werte irgendwie an verschiedene Variablen übergeben ? ...also $nummer,$name,$strasse,$ort ??
wenn du (ich nehme an mit file() ) die Datei ausgelesen hast, hast du zum Beispiel:
$datei[1] = "zwei;Berta;Lochgasse;Musterdorf";
verwendest du list und split (< > und http://www.php.net/manual/de/function.split.php):
list ($nummer, $name, $strasse, $ort) = split ('[;]', $datei[1]);
alternativ kann man (wenn ich das richtig verstanden habe) statt split auch explode ("explode(";",$datei[1])" - http://www.php.net/manual/de/function.explode.php) verwenden
Wenn die Inhalte nicht unbedingt in $nummer, $name usw stehen müssen kann man auch einfach "$inhalte = explode(";",$datei[1])" verwenden und auf die Inhalte mit "$inhalte[0]" bis "$inhalte[3]" zugreifen
hth
Tobias
Hallo Tobias
Sicherlich nett gemeint von dir, aber ich versteh es einfach nicht !!
Hallo Tobias
Sicherlich nett gemeint von dir, aber ich versteh es einfach nicht !!
irgendwie bekomme ich statt der gewünschten Werte immer ein
"Resource id #1" ?!?
Gruss
Frank
hi
Sicherlich nett gemeint von dir, aber ich versteh es einfach nicht !!
wo liegt das Problem? was verstehts du nicht? Wenn ich dir helfen soll musst du schon sagen wo es klemmt und evtl. deine bisherigen Versuche posten.
gruß
Tobias
<?PHP
$dateiname = "waren.txt";
$filename = $dateiname;
$datafile = fopen($filename , "r");
if ($datafile <=0)
{
echo "Datenfile nicht gefunden !";
exit;
}
else
{
$array = split(";",$datafile,3);
echo "<table cellspacing='2' cellpadding='2' border='0' align='center'><tr>";
echo "<td>Name</td><td>Bez.</td><td>Men.</td></tr>";
echo "<tr><td>$array[0]</td><td>$array[1]</td><td>$array[2]</td></tr></table>";
}
?>
Name Bez. Men.
Resource id #1
das textfile sieht so aus:
text1;text2;text3
eigentlich sollte doch
$array[0] = text1
$array[1] = text2
$array[2] = text3 sein ?
... und was bedeutet dieses "resource id #1" ??
Danke
Frank
hi
$dateiname = "waren.txt";
$filename = $dateiname;
für was ist diese zeile?
$datafile = fopen($filename , "r");
verwende nicht fopen sondern file
if ($datafile <=0)
if (!file_exists($dateiname))
{
echo "Datenfile nicht gefunden !";
exit;
}
else
{
$array = split(";",$datafile,3);
$array = explode(";",$datafile[0]);
//tabellenausgabe gekürzt
}
die Ausgabe so:
Name Bez. Men.
Resource id #1
jetzt so:
----
Name Bez. Men.
text1 text2 text3
---
eigentlich sollte doch
$array[0] = text1
$array[1] = text2
$array[2] = text3 sein ?
jetzt ja, aber wenn du "$datafile = fopen($filename , "r");" schreibst, hast du lediglich die Datei geöffnet, musst sie aber noch auslesen und wieder schließen. Außerdem kann man einen Dateihandle (oder wie auch immer das heißt, wenn man eine datei mit fopen öffnet heißt) nicht mit split behandeln, da es ja kein array ist.
gruß
Tobias
Besten Dank !!!
...ich komme der Sache näher ;-)
Nur bricht die Ausgabe jetzt nach der ersten Zeile ab :(
War da nicht irgendwas mit "wile (!feof)" ??
hallo <- auch wenn du das konsequent ignorierst
Nur bricht die Ausgabe jetzt nach der ersten Zeile ab :(
logisch, es sagt ihm ja keiner, dass er weitermachen soll.
War da nicht irgendwas mit "wile (!feof)" ??
ja, mit feof kann man testen ob das ende der Datei erreicht ist, dafür brauch man aber einen Dateizeiger den man nicht hat wenn man mit file arbeitet.
versuchs mal mit:
------
echo "<table cellspacing='2' cellpadding='2' border='0' align='center'><tr>"; //anfang der tabelle
echo "<td>Name</td><td>Bez.</td><td>Men.</td></tr>"; //uerberschrift der tabelle
for ($i=0;!empty($datafile[$i]);$i++) { //schleife die bei jedem durchlauf prüft, ob das array datafile leer ist und wenn ja - also die datei zuende ist - bricht sie ab
$array = explode(";",$datafile[$i]); //der array von vorhin, nur das in der eckigen klammer nicht mehr 0 steht sondern $i - es wird also bei jedem durchlauf auf eine andere zeile verwiesen
echo "<tr><td>$array[0]</td><td>$array[1]</td><td>$array[2]</td></tr>"; //die ausgabe der zeile (wie vorhin)
------
(das ganze im else bereich)
gruß
Tobias
ich bin mal inkonsequent *g*: HALLO
Besten Dank, Tobias ...
Gruss
Frank