PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : csv-Datei in Tabellen


jerzimeik
03.09.2004, 11:14:22
Ich möchte eine csv-Datei in eine Tabelle schreiben. Eigentlich ja kein Problem, aber ich möchte verschiedene Einträge aus einer Zeile in verschiedene Tabellenzellen reinbekommen.

Ungefähr so:

(csv-Datei)
Wert1.1;Wert1.2;Wert1.3
Wert2.1;Wert2.2;Wert2.3

Die Tabelle soll dann so aussehen:

----------------------------
Wert1.1 | Wert1.2 | Wert1.3|
----------------------------
Wert2.1 | Wert2.2 | Wert2.3|
----------------------------

Wie bekomme ich die einzelnen Werte in eine Zeile?

Kann mir irgendeiner vielleicht helfen!

Gweilo
03.09.2004, 11:16:48
explode() (http://www.php.net/manual/en/function.explode.php)

jerzimeik
03.09.2004, 11:19:06
Ich möchte, dass der Wert1.1 in einer Zelle steht usw., usw.:

<tr>
<td>Wert1.1</td>
<td>Wert1.2</td>
<td>Wert1.3</td>
</tr>
<tr>
<td>Wert2.1</td>
<td>Wert2.2</td>
<td>Wert2.3</td>
</tr>

Gruß

c4
03.09.2004, 11:36:32
Original geschrieben von jerzimeik
Ich möchte, dass der Wert1.1 in einer Zelle steht Dann streng Dich mal ein wenig an! Die Grundlage hat Dir Gweilo gegeben!

Gweilo
03.09.2004, 11:52:25
Original geschrieben von _c_4_
Dann streng Dich mal ein wenig an!

Genau, wir heissen ja schliesslich nicht Mutter Theresa

Mutter Theresa
03.09.2004, 11:52:59
<?php
$fp = fopen("deinedatei.csv", "r") or die ("datei konnte nicht ausgelesen werden");
echo '<table>';
while ($line = trim(fgets($fp,1000)))
{
$werte = explode(";",$line);
echo '<tr><td>'.$wert[0].'</td><td>'.$wert[1].'</td><td>'.$wert[2].'</td></tr>';
}
echo '</table>';
?>

c4
03.09.2004, 11:54:38
Interessante Form von Humor, die sich hier breit macht...

jerzimeik
03.09.2004, 12:24:41
Vielen Dank an Mutter Theresa! ;-)

Ich habe mich mittlerweile auch selbst mal daran versucht. Mit dem Code von Mutter komme ich an meine Daten ran. Jetzt ist aber vielleicht ja mal so, dass ich gar nicht genau weiß, wieviele Werte in einer Zeile stehen. Ich habe mir dazu mal folgende Gedanken gemacht:


$tabelle = "test.csv";
$fp = fopen($tabelle,"r");

while($zeile = fgetcsv($fp,1000))
{
$wert = explode(";",$zeile);
for($x=0;$x<count($wert);$x++){
echo "<tr><td>";
echo "$wert[$x]";
echo "</td></tr>";
}
}

echo "Ende der Tabelle!";
fclose($fp);


Aber bei mir zeigt er nur immer wieder das Wort Array an?!?!
Was habe ich falsch gemacht??

jerzimeik
03.09.2004, 12:43:06
Ich hab´s schon selbst gefunden!
*stolzaufmichsei*


...
while($zeile = fgetcsv($fp,1000))
...



Hier liegt der Fehler. Ich muss das ganze mit

...
while ($zeili = fgets($fp,1000))
...

abrufen!!

Danke für Eure Mithilfe!!!

jerzimeik
03.09.2004, 12:58:00
Neue Frage,

kann man den Zeiger bei fopen(); auch direkt auf die zweite Zeile setzen, wenn man die erste überspringen möchte???

c4
03.09.2004, 19:53:54
Original geschrieben von jerzimeik
Neue Frage,

kann man den Zeiger bei fopen(); auch direkt auf die zweite Zeile setzen, wenn man die erste überspringen möchte??? Nein.

Aber vielleicht gefällt Dir ja file():
--> http://php.net/file

xabbuh
04.09.2004, 00:40:09
Original geschrieben von jerzimeik
Neue Frage,

kann man den Zeiger bei fopen(); auch direkt auf die zweite Zeile setzen, wenn man die erste überspringen möchte???

Du könntest das Script folgendermaßen ändern:


<?php
$tabelle = "test.csv";
$fp = fopen($tabelle,"r");

$i = 1;
while($zeile = fgetcsv($fp,1000)) {
if($i > 1) {
$wert = explode(";",$zeile);

for($x=0;$x<count($wert);$x++) {
echo "<tr><td>";
echo "$wert[$x]";
echo "</td></tr>";
}
}
$i++;
}

echo "Ende der Tabelle!";
fclose($fp);
?>

tapferesschneid
04.09.2004, 22:08:39
Bei fgetcsv() brauchst Du dann auch kein explode() mehr ...