PDA

Vollstndige Version anzeigen : Textdatei auslesen und den Inhalt in eine Tabelle schreiben?


julien
04-02-2005, 21:35
Hallo! In Sachen PHP bin ich totaler Neuling. Wie kriege ich es hin, dass aus einer Textdatei, wo alles, was spter in die Tabelle kommt, untereinander steht, die Zeilen bis zum Ende der Datei ausgelesen werden und gleichzeitig die soeben ausgelesenen Zeilen geordnet in einer Tabelle stehen? Bei mir haut das noch nicht so hin, weil die Texte da etwas verschoben rauskommen (siehe meine Homepage, wo es noch etwas dauern wird, bis sie fertig ist: http://winetests.wi.ohost.de/getestet ).
Zustzlich mchte ich noch von dem Ordner "bilder" in der Tabellenspalte "luft problemlos" die Bilddateien "ja.png" fr "ja", "nein.png" fr "nein" und "jain.png" fr "jain". Fr Hilfe whre ich dankbar.

xabbuh
04-02-2005, 21:42
Ohne deinen Code zu kennen, ist es schwer, dir zu sagen, woran es hapert.

julien
04-02-2005, 21:45
<body style="color: rgb(0, 0, 0); background-color: rgb(255, 204, 0);"
alink="#000099" link="#000099" vlink="#990099">
<strong><u><div align="center">Spiele, die mit Wine laufen (oder auch nicht)</div></u></strong><br><br>
<table style="width: 100%; text-align: left;" border="1" cellpadding="2"
cellspacing="2">
<tbody>
<tr>
<td style="vertical-align: top;">Name des getesteten Spiels<br>
</td>
<td style="vertical-align: top;">l&auml;uft problemlos?<br>
</td>
<td style="vertical-align: top;">Hinweise<br>
</td>
<td style="vertical-align: top;">Tester<br>
</td>
</tr>
<?PHP
$datei = "spiele.csv";
$fp = fopen($datei,"r");
while(!feof($fp)){
$spname = fgets($fp,200);
$laufen = fgets($fp,5);
$hinw = fgets($fp,500);
$autor = fgets($fp,20);
echo '<tr>';
echo '<td>';
echo $spname;
echo '</td>';
echo '<td>';
echo $laufen;
echo '</td>';
echo '<td>';
echo $hinw;
echo '</td>';
echo '<td>';
echo $autor;
echo '</td>';
echo '</tr>';
}
fclose($fp);
?>
</tbody>
</table>

xabbuh
04-02-2005, 21:50
Ich wrde die CSV-Datei anders aufbauen: Nimm fr jeden Datensatz eine Zeile. Dort kannst du die Daten dann ja per Semikolon trennen.
Fr die Anzeige schau dir die Funktion fgetcsv() (http://www.php.net/fgetcsv) an.

julien
04-02-2005, 22:41
danke erstmal fr den Link. Aber was, wenn im Satz der Textdatei ein Komma drin ist, das ausgegeben werden soll? Das gilt ja denn auch als Komma-Separierten Wert!

xabbuh
04-02-2005, 23:26
Es gibt ja auch noch den vierten Parameter "enclosure", mit dem ein Zeichen angegeben wird, von dem die einzelnen Segmente umschlossen sind. blich ist hier, soweit ich wei, das doppelte Anfhrungszeichen. Wenn nun in einem Segment noch ein Anfhrungszeichen vorkommen soll, muss dies, meine ich, mit einem " maskiert werden.

Beispiel: Du hast einen Datensatz, der aus 3 Elementen besteht.
1. irgendwas
2. noch mehr
3. und "noch" mehr

Wrde zu:
"irgendwas","noch mehr", "und ""noch"" mehr"

Probier damit einfach mal ein wenig herum.

Mehr zu CSV-Dateien, findest du hier: http://de.wikipedia.org/wiki/CSV

julien
05-02-2005, 09:28
Klappt wunderbar! Die Homepage wird sich dann speziell auf WINE (einen Windows-Emulator) konzentrieren und bald fertig sein. MfG Julien.

Slaughter
06-02-2005, 16:15
Hi, habe ein Problem mit sowas hnligem.
ich will genau eine Zeile ausgeben (aus einer csv datei)

$tpl=$_GET[action];
$tpl = intval(substr($tpl,5)) OR die("Hei das mit dem inval klappt net :(");
$fp = fopen("error.csv","r") OR DIE("DIE DATEI LSST SICH NICHT FFNEN!");
$fgetcsv = fgetcsv($fp,207,';') or die("das mit fgetcsv geht nicht!");
fclose($fp) or die("DATEI LSST SICH NICHT SCHLIEEN!");
echo "<p>FEHLER!!!! UND ZWAR:<br><b>".$fgetcsv[$tpl];

Sprich ich gebe in die adressenleiste ein 'datei.php?action=error2'
Und will so die 2.Zeile aus der Datei error.csv auslesen.
Ausgegeben wird aber leider nur:
'FEHLER!!!! UND ZWAR:
'

xabbuh
06-02-2005, 17:07
Hast du mal print_r($fgetcsv) gemacht? Wie sieht die Ausgabe aus? Welchen Wert hat $tpl?

Slaughter
06-02-2005, 17:19
hmm...
$tpl hat den Wert 2 (action=error2) ist also alles ok
aber $fgetcsv
hat nur den wert:

Array ( [0] => Sie haben keine ausreichenden Rechte, um diese Seite zu betreten. Sie sind Usergruppe User, brauchen aber den Status eines Administrators! [1] => )
sprich, der hat irgendwie aufgehrt, nach dem ersten :(

aber sollte der nicht nach jedem ';'
ein neuen 'Array-Abschnitt'(array[abschnitt]<-mein ich^^) beginnen?
Warum tut er das nicht?

xabbuh
06-02-2005, 17:28
Setz den Wert fr den zweiten Parameter von fgetcsv() doch mal hher als 207.

Slaughter
06-02-2005, 17:47
passiert nichts...
X(
Das gibt doch nur an, was das lngste Element ist, oder?

EDIT:
hei, habe es geschafft! =)

Habe einfach alles zu einer Zeile gemacht (in error.csv)
Davon war aber nie die rede :(
Oder hab i mich da verlesen?