PHP innerhalb echo ich dreh durch

DrBishop

Grünschnabel
Hallo liebe Gemeinde,

nun, ich bin noch Anfänger in sachen PHP und habe mich nun schon durch alle möglichen Beiträge geschlagen und finde den Fehler nicht. Ich habe mittels echo <<<END einen HTML Block der eine Tabelle abbildet welche mittels Variablen aus eine MySQL Abfrage gefüllt wird. Das funktioniert prima. Da ich hier Werte der einzelnen Kalenderwochen des Jahres abbilde möchte ich die Zelle der aktuellen KW mit einem farbigen Hintergrund markieren. Folgende Idee schwebte mir hierzu vor:

echo <<<END
.....
<td bgcolor= ($kw == 44) ? "$backred" : "$backgreen"; class="tabellesenkws"> <div align="center">44</div></td>
.....

END;

$kw enthält die aktuelle KW aus dem Systemdatum.

aber das ****t nicht weil er mir das ausgibt:

<td bgcolor= (44 == 44) ? "FF0000" : "395359"; class="tabellesenkws"> <div align="center">44</div></td>

wie bringe ich der Kerl dazu den Syntax zu interpretieren? Ich stehe voll aufm Schlauch.
Vielen Dank schon mal für Eure Hilfe
 
Hallo DrBishop,

du nutzt die Heredoc Syntax, die zwar Variablen einfügen kann, aber keine Bedingungen verarbeiten kann.

Wieso machst du nicht ein einfaches echo?
PHP:
echo '<td bgcolor=' . ($kw==44) ? $backred : $backgreen . ' class="tabellenkws">';
// ...
 
Vielen Dank schon mal!!
Es ging bei 52 TabellenSpalten einfach schneller daher habe ich es so gemacht. Ich werde Deinen Vorschlag aber mal ausprobieren.
 
Hallo!

Es ging bei 52 TabellenSpalten einfach schneller daher habe ich es so gemacht.
Ich weiss zwar nicht wie das Gesamtergebnis aussehen soll, aber was hältst Du davon die Spalte einfach durch eine Schleife zu jagen?
PHP:
<?php
$kw=date("W");
$backred="FF0000";
$backgreen="395359";

for($i=1;$i<=52;$i++) {
    echo "<td bgcolor=\"#".(($kw == $i) ? $backred : $backgreen)."\"; class=\"tabellesenkws\"> <div align=\"center\">".$i."</div></td>\n";
}
?>
Im übrigen gehört zum Farbcode auch eine Raute (#). ;)

Gruss Dr Dau
 
Wo wir schon dabei sind, bgcolor gilt soweit ich weiß (in HTML 5 sicher) als obsolete!
Man sollte es durch CSS ersetzen:
CSS:
.table_cell_colored
{
  background-color: #FF0000;
}
Oder direkt in den HTML-Code:
PHP:
echo '<td style="background-color: #' . ($kw==$i)?$backred:$backgreen . '">';
 
vielen Dank für die nützlichen Informationen - funktioniert jetzt :-)
Das mit der Schleife ist eine sehr gute Idee****** Aber als newbie sieht man manchmal den Wald vor lauter Bäumen nicht!

Bis zur nächsten Frage... und noch mal vielen Dank für die schnelle Hilfe!!

Grüße
DrBishop
 
Zurück