ChrisB: Bei jeder 2. Ausgabe anderer Hintergrund

Beitrag lesen

Hi,

if($zahl1 == $zahl2)
{
echo "<tr class="rot">\r";    #class für den Hintergrund
  }
  else
  {
    echo "<tr class="grün">\r";   #class für den Hintergrund
  }

Hier gibst du zwei mal fast das gleiche aus, nur der Klassenname ist jeweils anders.
Das mag bei diesem Minimalbeispiel nicht besonders arg erscheinen - aber in einem anderen Szenario mag es mal mehr sein, als nur eine Tabellenzeile, die ausgegeben werden soll. Ausserdem, auch bei diesem Szenario, sind jeweils Anpassungen an *zwei* Stellen erforderlich, wenn bspw. allgemein die Zeilen um ein weiteres Attribut ergänzt werden sollen - also Gefahr, bei der Änderung die zweite Stelle zu übersehen.
Deshalb würde ich in so einem Fall den jeweils zu verwendenden Klassennamen einer Variablen zuweisen, und dann nur *eine* Ausgabe machen, während der diese Variable an der richtigen Stelle eingefügt wird.

Ob man jetzt zwei Klassen dafür nutzt, oder wie Steel vorschlug nur eine, ist eher nebensächlich - was ich aber an dem ganzen Konstrukt noch unschön finde: Die If-Abfrage macht einen grossen Teil des Codes aus - dabei geht der *eigentliche* Zweck dieser Code-Stelle, nämlich die Ausgabe von Werten in Tabellenzeilen, beinahe unter.

Das kann man "schöner" gestalten, in dem man für den Ping-Pong-Wechsel eines Variableninhaltes den ternären bzw. Trinitäts-Operator nutzt:

$klasse = ($klasse == "gerade") ? "ungerade" : "gerade";
Wenn $klasse aktuell den Inhalt "gerade" hat, dann wird ihr der Wert "ungerade" zugewiesen - und sonst (wieder) "gerade".
Natürlich nicht vergessen, die Variable vor der Schleife zu initialisieren - mit dem Wert "gerade", damit dann anschliessend die erste Zeile, die ausgegeben wird, "ungerade" verpasst bekommt.

$klasse = 'gerade';  
while ( /* Datenbeschaffung */ ) {  
    $klasse = ($klasse == 'gerade') ? 'ungerade' : 'gerade';  
    echo '<tr class="'.$klasse.'">...</tr>';  
}

Das ist doch schön kurz, oder?
Dass hier die Ausgabe von Tabellenzeilen das wesentliche ist, was in dieser Schleife geschehen soll, sieht man so gut wie auf den ersten Blick.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.