Schriftfarbe abhängig vom Inhalt
inspiron
- php
Hallo,
ich möchte, das sich die Schriftfarbe abhängig vom Zellinhalt ändert.
wenn "$datensatz['FEHLERKATEGORIE']" Inhalt = "i.O" dann Schriftfarbe = grün, sonst rot!
Ich weiß nicht wie ich das lösen kann?
<td style="border-top: 1px dotted #00447C; color: red" width="20%" align="left" valign="top"><?=$datensatz['FEHLERKATEGORIE']?></td>
Gruß
Cześć!
ich möchte, das sich die Schriftfarbe abhängig vom Zellinhalt ändert.
wenn "$datensatz['FEHLERKATEGORIE']" Inhalt = "i.O" dann Schriftfarbe = grün, sonst rot!
Ich weiß nicht wie ich das lösen kann?
Indem Du "wenn" ins Englische übersetzt. ;-)
Etwas ausführlicher: Du baust einen if-Block mit dem oben genannten Vergleich und weist darin einer Variablen den gewünschten Wert (grün im if, rot im else - bzw. Klassennamen, siehe unten) zu.
<td style="border-top: 1px dotted #00447C; color: red" width="20%" align="left" valign="top"><?=$datensatz['FEHLERKATEGORIE']?></td>
Und hier baust Du die neue Variable dann entsprechend ein. Besser als Inline-Styles wären aber Klassen, z.B. "okay" und "error", die Du dann per CSS formattierst.
Viele Grüße vom Længlich
....habe ich das so richtig verstanden?
<?php
$var="i.O.";
if($var == $datensatz['FEHLERKATEGORIE']){
farbe = color: green;
} else {
farbe = color: red;
}
?>
<td style="border-top: 1px dotted #00447C; farbe"><?=$datensatz['FEHLERKATEGORIE']?></td>
Grüße,
fast - nur dass du farbe auch noch irgendwie ausgeben musst - einfach so im text tus nix
MFG
bleicher
...mhh,
ich weiß aber nicht weiter?!
Gruß
Grüße,
...mhh,
ich weiß aber nicht weiter?!
du gisbt doch schon einen Datensatz aus - sorge dafür dass der hexadezimaler farbwert auch im html landet, sonst hast du ihn zwar ermitteln, der Browser kriegt es aber nicht mit - weißt du wie man mittels php eine variable ausgibt?
MFG
bleicher
Hallo,
ich habe jetzt mal folgendes probiert, es wird alles aufgelistet nur "Rot!" ist nicht rot und "Grün!" ist nicht gruen!
Hi,hi :-), meine erste Schleife, freu!
Das mit der Variable muß ich erst lesen wie das geht!
Gruß & Dank
<?
$var = "i.O.";
if($var == $datensatz['FEHLERKATEGORIE']){
echo "<font color='#008000'> Grün!</font>";
echo "<font class='gruen'> Farbe Grün!</font>";
} else {
echo "<font color='#FF0000'> Rot!</font>";
echo "<font class='rot'> Farbe Rot!</font>";
}
?>
//in der css Datei:
#rot {
color : Red;
}
#gruen {
color : Green;
}
@@inspiron:
nuqneH
ich habe jetzt mal folgendes probiert, es wird alles aufgelistet nur "Rot!" ist nicht rot und "Grün!" ist nicht gruen!
?? Du meinst: "Farbe Rot!" ist nicht rot und "Farbe Grün!" ist nicht grün?
Das liegt daran, dass der ID-Selektor '#rot
' nicht auf <font class='rot'>
passt. [CSS2 §5.1, §5.9, §5.8.3]
Und bezeichne Klassen nie nach der gegenwärtig gewünschten Darstellung! Wenn sich die Darstellung später ändert, machen die Bezeichner keinen Sinn mehr. Bezeichne Klassen nach ihrer Funktion; also nicht "gruen" und "rot", sondern bspw. "okay" und "error".
Und benutze nicht das missbilligte 'font'-Element! Auch keine missbilligten Attribute (wie @color). Auch keine Inline-Styleangaben.
Hi,hi :-), meine erste Schleife, freu!
Freu dich nicht zu früh! 'if
' ist keine Schleife.
Qapla'
Hallo,
danke!
Ich habe es jetzt so gelöst,
die farbliche Darstellung funktioniert zu meiner Zufriedenheit.
Nur funktioniert die gestrichelte Linie nicht mehr.
<td style="border-top: 1px dotted #00447C" width="30%" align="left" valign="top"><?=$datensatz['UHRZEIT']?></td>
<?
$var = "i.O.";
if($var == $datensatz['FEHLERKATEGORIE']){
echo "<td border-top: 1px dotted #00447C'><font class='ok'>".$datensatz['FEHLERKATEGORIE']."</syle></font></td></div>";
} else {
echo "<td border-top: 1px dotted #00447C'><font class='error'>".$datensatz['FEHLERKATEGORIE']."</style></font></b></div>";
}
?>
<td style="border-top: 1px dotted #00447C" width="10%" align="center" valign="top"><?=$datensatz['BEARBEITET']?></td>
...ich habs! :-), freu!
<?
$var = "i.O.";
if($var == $datensatz['FEHLERKATEGORIE']){
echo "<td align='left' class='ok' style='border-top: 1px dotted #00447C'>".$datensatz['FEHLERKATEGORIE']."</font></td>";
} else {
//echo "<td border-top: 1px dotted #00447C'><font class='error'>".$datensatz['FEHLERKATEGORIE']."</font></td>";
echo "<td align='left' class='error' style='border-top: 1px dotted #00447C'>".$datensatz['FEHLERKATEGORIE']."</td>";
}
?>
@@inspiron:
nuqneH
...ich habs! :-), freu!
Freu dich nicht zu früh! (Oh, ich wiederhole mich.)
Qapla'
@@inspiron:
nuqneH
Ich habe es jetzt so gelöst,
die farbliche Darstellung funktioniert zu meiner Zufriedenheit.
Nein, damit kann man nicht zufrieden sein. Welcher Teil von
Und benutze nicht das missbilligte 'font'-Element! Auch keine missbilligten Attribute (wie @color). Auch keine Inline-Styleangaben.
war für dich unverständlich?
Nur funktioniert die gestrichelte Linie nicht mehr.
Hast du bei <td border-top: 1px dotted #00447C'>
etwas anderes erwartet?
$var = "i.O.";
if($var == $datensatz['FEHLERKATEGORIE']){
echo "<td border-top: 1px dotted #00447C'><font class='ok'>".$datensatz['FEHLERKATEGORIE']."</syle></font></td></div>";} else {
echo "<td border-top: 1px dotted #00447C'><font class='error'>".$datensatz['FEHLERKATEGORIE']."</style></font></b></div>";
}
Warum stehen das in beiden Fällen Gleiche doppelt im Code?
(Wenn sie denn gleich wären. Im 2. Fall schließt du ein gar nicht geöffnetes 'b'-Element?)
Innerhalb der Abfrage sollte nur der in beiden Fällen Code stehen. Außerdem kein 'font'-Element; die Klasse bekommt das 'td'-Element. Wie man das verkürzt notiert, hatte ich dir bereits gesagt. Was hattest du an dieser Lösung auszusetzen?
Alle 'td'-Elemente sollte denselben border-top bekommen. Nicht für jedes Element inline angeben, sondern für alle auf einmal! Das ist eine Zeile CSS:
td { border-top: 1px dotted #00447C }
Aber warum gibst dü überhaupt jeder einzelnen Tabellenzelle diesen Rahmen und nicht gleich der ganzen Tabellenzeile?
table { border-collapse: collapse }
tr { border-top: 1px dotted #00447C }
Qapla'
Wie man das verkürzt notiert, hatte ich dir bereits gesagt. Was hattest du an dieser Lösung auszusetzen?
...hää, aber nicht zu mir?!
@@inspiron:
nuqneH
Wie man das verkürzt notiert, hatte ich dir bereits gesagt. Was hattest du an dieser Lösung auszusetzen?
...hää, aber nicht zu mir?!
Du darfst eine Ergänzung zu Længlichs Posting durchaus als Antwort zu deinem Problem ansehen.
Qapla'
Hallo Gunnar,
Magen leer, Konzentration lässt nach? ;-)
Warum stehen das ...
... sollte nur der in beiden Fällen Code stehen.
Aber warum gibst dü ...
*scnr*
Martin
@@Der Martin:
nuqneH
Magen leer, Konzentration lässt nach? ;-)
Nee, voll. #siesta
Qapla'
@@Længlich:
nuqneH
Cześć!
Witam!
Besser als Inline-Styles wären aber Klassen
Unbedingt!!
z.B. "okay" und "error"
Eine davon könnte genügen. Im Normalfall keine Klasse.
die Du dann per CSS formattierst.
td { color: green }
td.error {color: red }
Falls es doch zwei Klassen sein sollen, bietet sich der ternäre Operator an:
<td class="[code lang=php]<?= $datensatz['FEHLERKATEGORIE'] == 'i.O.' ? 'okay' : 'error' ?>
">[/code]
BTW, stünde das Datum in einem Attribut statt im Elementinhalt
<td data-state="i.O."/>
<td data-state="Fehler"/>
wäre gar kein Script notwendig, sondern nur CSS:
td[data-state]::after { content: attr(data-state) }
td[data-state] { color: red }
td[data-state="i.O."] { color: green }
Qapla'