php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
CSV Tabelle - Zahl als Bild darstellen


 
styrol
11-04-2019, 13:25 
 
Ich bekomme eine CSV Tabelle, die ich auf einer Seite darstellen soll. Meine Programmierung dazu:

<?php

// Konfiguration
$csvFile = 'wall_11.csv';
$firstRowHeader = true;
$maxRows = 20;

// Daten auslesen und Tabelle generieren
$handle = fopen($csvFile, "r");
$counter = 0;
echo '<table id="videowall" class="csvTable">';
while(($data = fgetcsv($handle, 999, ";")) && ($counter < $maxRows)) {

echo '<div class="fade-in">' . '<tr id="videozeile">';
if(($counter == 0) && $firstRowHeader) {
echo '<td class="laenge1">' . '<div id="rang">' .$data[0]. '</div>' . '</td>';
echo "<td class='laenge2'><div id='flag'><img src='$data[10]'></div></td>";
echo '<td class="laenge3">' . '<div id="startnumber">' .$data[3]. '</div>' . '</td>';
echo '<td class="laenge4">' . '<div id="rider">' .$data[4]. '</div>' . '<div id="horse">' .$data[5].' </div>' . '</td>';
echo '<td class="laenge5">' . '<div id="land">' .$data[8]. '</div>' . '</td>';
echo '<td class="laenge6">'.$data[2].'</td>';
echo '<td class="laenge8">'.$data[6].'</td>';
echo '<td class="laenge9">' . '<div id="delay">' .$data[7]. ' </div>' . '</td>';

}
else {
echo '<td class="laenge1">' . '<div id="rang">' .$data[0]. '</div>' . '</td>';
echo "<td class='laenge2'><div id='flag'><img src='$data[10]'></div></td>";
echo '<td class="laenge3">' . '<div id="startnumber">' .$data[3]. '</div>' . '</td>';
echo '<td class="laenge4">' . '<div id="rider">' .$data[4]. '</div>' . '<div id="horse">' .$data[5].' </div>' . '</td>';
echo '<td class="laenge5">' . '<div id="land">' .$data[8]. '</div>' . '</td>';
echo '<td class="laenge6">'.$data[2].'</td>';
echo '<td class="laenge8">'.$data[6].'</td>';
echo '<td class="laenge9">'.$data[7].'</td>';

}
echo '</tr>' . '</div>';

$counter++;
}
echo '</table>';

fclose($handle);

?>
Es funktioniert einwandfrei.

Diese Zeile: echo '<td class="laenge6">'.$data[2].'</td>';

soll nicht die Zahl von 1 - 8 aus dem CSV wiedergeben, sondern ein PNG (je nach Zahl gibt es 8 verschiedene, je einer Zahl zugehörige PNG's) , das in dem Ordner "Status" liegt darstellen.
Kann mir hier jemand helfen - ich wäre dankbar.
LG

 
h3ll
11-04-2019, 14:15 
 
https://www.php.de/forum/webentwicklung/php-einsteiger/1553034-csv-tabelle-zahl-als-bild-darstellen

 
styrol
15-04-2019, 14:23 
 
Nach längerem Hin und Her hab und Kopfzerbrechen habe ich nun doch schlussendlich die Lösung meines Problems gefunden. Ich dachte ich veröffentliche Sie hier, für den Fall, dass doch ein Anfänger wie ich vor dem selben Problem steht. Vielleicht ist es irgendwann hilfreich.

Das ist der komplette PHP-Code, der eine CSV Tabelle ausliest und darstellt:

<?php

// Konfiguration
$csvFile = 'wall_11.csv';
$firstRowHeader = true;
$maxRows = 20;

// Daten auslesen und Tabelle generieren
$handle = fopen($csvFile, "r");
$counter = 0;
echo '<table id="videowall" class=\"csvTable\">';
while(($data = fgetcsv($handle, 999, ";")) && ($counter < $maxRows)) {

echo '<div class="fade-in">' . '<tr id="videozeile">';
if(($counter == 0) && $firstRowHeader) {
echo '<td class="laenge1">' . '<div id="rang">' .$data[0]. '</div>' . '</td>';
echo "<td class='laenge2'><div id='flag'><img src='$data[10]'></div></td>";
echo '<td class="laenge3">' . '<div id="startnumber">' .$data[3]. '</div>' . '</td>';
echo '<td class="laenge4">' . '<div id="rider">' .$data[4]. '</div>' . '<div id="horse">' .$data[5].' </div>' . '</td>';
echo '<td class="laenge5">' . '<div id="land">' .$data[8]. '</div>' . '</td>';
echo "<td class='laenge6'><div id='status'><img src='status/".$data[2].".png'></div></td>";
echo '<td class="laenge8">' . '<div id="time">' .$data[6]. ' </div>' . '</td>';
echo '<td class="laenge9">' . '<div id="delay">' .$data[7]. ' </div>' . '</td>';

}
else {
echo '<td class="laenge1">' . '<div id="rang">' .$data[0]. '</div>' . '</td>';
echo "<td class='laenge2'><div id='flag'><img src='$data[10]'></div></td>";
echo '<td class="laenge3">' . '<div id="startnumber">' .$data[3]. '</div>' . '</td>';
echo '<td class="laenge4">' . '<div id="rider">' .$data[4]. '</div>' . '<div id="horse">' .$data[5].' </div>' . '</td>';
echo '<td class="laenge5">' . '<div id="land">' .$data[8]. '</div>' . '</td>';
echo "<td class='laenge6'><div id='status'><img src='status/".$data[2].".png'></div></td>";
echo '<td class="laenge8">' . '<div id="time">' .$data[6]. ' </div>' . '</td>';
echo '<td class="laenge9">' . '<div id="delay2">' . '+' .$data[7]. ' </div>' . '</td>';

}
echo '</tr>' . '</div>';

$counter++;
}
echo '</table>';

fclose($handle);

?>

----------------------------------------------------------
Das war meine Problemzeile:

echo "<td class='laenge6'><div id='status'><img src='status/".$data[2].".png'></div></td>";

Diese liest nun Zahlen von 1 - 9 aus und stellt aber statt der Zahl ein hinterlegtes Bild aus einem anderen Ordner dar.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:37 Uhr.