.csv datei mit php auslesen

oezer

Erfahrenes Mitglied
Hallo,

ich sitze grad vor einer .csv Datei die mit Inhalten gefüllt ist. Ich habe etliche Spalten, in einem dieser Spalten "Links" habe ich ein inhalt mit "Zum Anbieter"; eingefügt. Jetzt habe ich eine weitere Spalte in welcher der Link hinterlegt ist. Jetzt möchte ich die Spalte mit dem Link zum Anbieter.. ähm... maskieren? bzw. mit dem Link hinterlegen..

Code:
"Produkt";"Beschreibung";"Preis";"Link";"Anbieterlink";
"Schoko";"Weisse Schoko Lecker";"2,50€";"Zum Anbieter";"http://foo.bar";

D.h. die Tabelle die ich ausgebe sollte einen Link haben welche anklickbar ist und zum Anbieter führt..

Hier mein PHP-Code
PHP:
<table border="1">
<?php
$handle = fopen('shoko.csv', 'r');
while($data = fgetcsv($handle, 500, ';'))

{
        echo "<tr>";
        echo "<td>".$data[0]."</td>";
        echo "<td>".$data[1]."</td>";
        echo "<td>".$data[2]."</td>";
        echo "<td>".$data[3]."</td>";
        echo "<td>".$data[4]."</td>";
        echo "</tr>";
}

fclose($handle);

?>
</table>

Hat jemand eine idee mit welcher Funktion ich das lösen könnte?
Habe leider nicht viel Ahnung von PHP.. würde mich über eine Antwort freuen..

thx
oezer
 
PHP:
<table border="1">
<?php
$handle = fopen('shoko.csv', 'r');
while($data = fgetcsv($handle, 500, ';'))

{
        echo "<tr>";
        echo "<td>".$data[0]."</td>";
        echo "<td>".$data[1]."</td>";
        echo "<td>".$data[2]."</td>";
        echo "<td><a href=\"".$data[4]."\">".$data[3]."</a></td>";
        echo "</tr>";
}

fclose($handle);

?>
</table>
 
cool! werde ich sofort ausprobieren... Danke dir rechtherzlich.. :)

grüße
oezer

Nachtrag:
Kann ich auch seperate Zeilen einlesen? und manche auslassen? Angenommen ich wüsste von vornherein das ich 30 zeilen habe.. und wüsste das ich z.B. zeile 10 und 13 auslassen will.. müsste ich dann nur die .$data[11] und $data[14] auslassen?

thx again..
 
Zuletzt bearbeitet:
Hi,

also entweder so, wie du es geschrieben hast, wenn du die spalten weglassen willst oder wenn du den 10. und 13. zeileneintrag (ganze zeile) weglassen willst mit einer if-bedingung

PHP:
<table border="1">
<?php
$i = 1; //Zählervariable
$handle = fopen('shoko.csv', 'r');
while($data = fgetcsv($handle, 500, ';'))

{
        
    if($i != "10" && $i != "13"){ //Wenn $i ungleich 10 und ungleich 13
        echo "<tr>";
        echo "<td>".$data[0]."</td>";
        echo "<td>".$data[1]."</td>";
        echo "<td>".$data[2]."</td>";
        echo "<td><a href=\"".$data[4]."\">".$data[3]."</a></td>";
        echo "</tr>";
    }
    $i++; //Zählervariable hochzählen
}

fclose($handle);

?>
</table>

Das wäre jetzt mein Ansatz :) Achso, i habe ich auf 1 gesetzt, weil ich jetzt davon ausgegangen ist, dass der eintrag 0 bei dir 1 ist.

Greetz
 
Du kannst die gesamte Funktion [phpf]fgetcsv[/phpf] auch durch eine eigene Mechanik ersetzen, in dem du die Datei mit [phpf]file[/phpf] zeilenweise in ein Array einliest und danach beim iterieren mit [phpf]explode[/phpf] die Werte trennst.
 
Hallo Gumtech,

t einwandfrei... thx !

@felix,
werde ich mal ausprobieren, um die funktion file() mal näher anzuschauen.. thx
 
Du kannst die gesamte Funktion [phpf]fgetcsv[/phpf] auch durch eine eigene Mechanik ersetzen, in dem du die Datei mit [phpf]file[/phpf] zeilenweise in ein Array einliest und danach beim iterieren mit [phpf]explode[/phpf] die Werte trennst.

[phpf]file_get_contents[/phpf] würde ich da empfehlen mit PHP5, sonst halt [phpf]fopen[/phpf] etc.
 
[phpf]file_get_contents[/phpf] würde ich da empfehlen mit PHP5, sonst halt [phpf]fopen[/phpf] etc.

Warum?
In diesem Fall ist meiner Meinung nach [phpf]file[/phpf] die beste Funktion dafür.

Wenn man die gesamte Datei als einen einzigen großen String hat, kann man sie zwar anhand von Semikola zerteilen, aber sobald die Anzahl der Einträge variabel ist (sollte zwar nicht sein, kann aber vorkommen, kommt man in Teufels Küche.

Und [phpf]fopen[/phpf] finde ich nur fürs Lesen Overkill.
 
@vasko : das nächste mal bitte ein neues Thema aufmachen.

Nun zu deiner Frage. Du wirst nicht darum kommen es wie oben beschrieben den Weg abzugehen, bis du am gewünschten Feld bist.

PHP:
<?php

$ergebnis = '';
$zeile = 5
$spalte = 2 //Entspricht der Spalte C, da das Array mit 0 beginnt

$i = 1; //Zählervariable
$handle = fopen('shoko.csv', 'r');
while($data = fgetcsv($handle, 500, ';'))
{
     if($i == $zeile) //Wenn du dich in der gewünschten Zeile befindest
     {
         $ergebnis = $data[$spalte];
         break; //Beendet die Schleife      
    }
    $i++; //Zählervariable hochzählen
}
fclose($handle);
?>
 
Zuletzt bearbeitet:
Zurück