Bildplatzhalter ausblenden

hawaiian

Mitglied
Hallo zusammen,

aus meiner Datenbank sind auch Bilder abrufbar, die zusammen mit anderen Daten in einer Tabelle dargestellt werden. Ist kein Bild vorhanden, bleibt der dafür vorgesehene Tabellenbereich leer. Mozilla Firefox und Opera zeigen dann lediglich (und wie von mir erwünscht) den Zellenbereich mit der definierten Hintergrundfarbe an, sozusagen also einen leeren Bereich. Der IE, Google Chrome sowie Safari dagegen weisen einen Platzhalter aus (siehe Anhang). Dies schaut unschön aus. Ich kann das Problem so lösen, indem ich im jeweiligen Datensatz ein 1-Pixel großes Bild mit der Hintergrundfarbe der Tabelle hinterlege.

Meine Frage ist nun, ob ich dies auch durch einen PHP-Code auf einfachere Weise erreichen kann. Hier der Code zur Darstellung des entsprechenden Tabellenbereiches:

PHP:
echo "<td class='zeile1'>". "<img border=\"0\" src=\"".$row->os."\" width=\"80\" height=\"100\">"; "</td>";

Viele Grüße
hawaiian
 

Anhänge

  • platzhalter.png
    platzhalter.png
    397 Bytes · Aufrufe: 84
Es gibt mehrere Möglichkeiten, über PHP kannst du die Existenz einer Ressource mit file_exists() prüfen. Alternativ kannst du es auch über JavaScript lösen.

HTML:
<img src="foo.jpg" alt="" onerror="this.style.display='none'" />

Wobei die PHP Lösung besser ist da 404 Fehler bei Google & Co. sehr unbeliebt sind.
 
Hallo Napofis,

ich hab's mit file_exists() versucht - und es hat geklappt. Der Code schaut jetzt so aus:

PHP:
 if (file_exists("$row->os")) { echo "<td class='zeile1'>". "<img border=\"0\" src=\"".$row->os."\" width=\"80\" height=\"100\">"; "</td>"; }
 else { echo "<td class='zeile1'>"; "</td>"; }

Recht herzlichen Dank
hawaiian
 
Mal etwas überarbeitet:

PHP:
echo '<td class="zeile1">';
if (file_exists($row->os)) echo '<img border="0" src="'.$row->os.'" width="80" height="100">';
echo '</td>';

Versuche redundanten Code zu vermeiden, das macht das ganze nur unübersichtlich und anfälliger für Fehler.
 
Zurück