Zitat Zitat von drunken monkey
Ich würde dir einfach raten, die Tabelle aufzumachen und dann den PHP-Code zu schreiben:
Ich möchte nur darauf hinweisen, daß so etwas grauenerregend schlechter Stil ist und unter allen Umständen vermieden werden sollte. Inline-Code ist das PHP-Äquivalent zu GOTO: Er führt sehr schnell zu einem unwartbaren Haufen Spaghetticode, den selbst der Autor nur noch mit Mühe entwirren kann. Frag' mal SDS, warum niemand die RMXP-Erweiterung für's Atelier schreiben wollte.

Wenn man mit PHP HTML-Code generiert sollte man Templates nutzen, wann immer das möglich ist. Mit Templates kann man ohne Probleme Interface und Programmlogik voneinander trennen - und sie sind gar nicht mal schwer umzusetzen.

Ein einfaches Templatesystem könnte so aussehen:
PHP-Code:
### Diesen Kram könnte man wunderbar in ein Include packen
<?php
  
// Lädt ein Template in einen String und escapt alle Anführungszeichen. Gibt
  // FALSE zurück, wenn die gewünschte Datei nicht existiert
  
function load_template($file)
  {
    if (!
is_file($file)) return false;
    return 
str_replace('"','\"',implode('',file($file)));
  }

  
// Diese Funktion nimmt den Content, wickelt ihn in eine Basisseite ein und
  // schickt ihn an den Browser
  
function send_page($content$basefile)
  {
    
$template load_template($basefile);
    
$template str_replace('{CONTENT}'$content$template);

    echo 
stripslashes($template);
  }
?>
Den Kram benutzt man dann so:
PHP-Code:
<?php
  
require('Die Datei da oben');

  
// Hier kommt Code, der eine Liste von Zeilen erzeugt, die wir brauchen.
  // Beispielsweise Bild-URLs. Der Kram wird in $zeilen geschrieben.

  // Wir laden das Template, das die einzelnen Zeilen darstellt
  
if (!$td_template load_template('res/td.htm'))
    die(
'zOMG, konnte das Template nicht finden!!1');
  
// Ein String, der hinterher die fertigen Tabellenzeilen beinhaltet
  
$zeilen_liste '';

  foreach (
$zeilen as $url)
  {
    
// Wir schreiben den URL dahin, wo beim Template {URL} steht und
    // hängen das Ergebnis an die Liste an
    
$zeilen_liste .= str_replace('{URL}'$url$td_template);
  }

  
// Jetzt geben wir den Kram aus
  
send_page($zeilen_liste'res/gallerie.htm');
?>
Zum Schluß noch die beiden Templates:

HTML-Code:
### res/gallerie.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Galerie</title>
  </head>
  <body>
    <table>
{CONTENT}
    </table>
  </body>
</html>

### res/td.htm
      <tr><td><img src="{URL}" alt=""></td></tr>

Das ist an sich alles, was man für Templates braucht. Man kann in einem Template mehrere Variablen verbauen (die man dann ersetzt, indem man mehrmals str_replace() mit verschiedenen Werten drüber laufen läßt) und man kann Templates in Templates verschachteln und so komplexe Seitenlayouts umsetzen (indem man einfach eine durchgearbeitete Templatevariable nimmt und sie per str_replace() in eine andere einfügt) und hat damit alle Möglichkeiten, die man ohne Templates auch hat. Aber der Code ist sauber getrennt (zwischen HTML und PHP) und man hat später kaum Schwierigkeiten, den Kram zu warten.

Und ja, man sollte für jedes kleine poplige Projekt Templates verwenden (zumindest solange es HTML ausgibt). Wenn man sie nicht verwendet gewöhnt man sich daran, sie nicht zu verwenden und tut da irgendwann auch in einer Seite, die man (oder gar jemand anders) später noch mal warten können muß. Und das kann einem die Arbeit nur schwerer machen.