inspiron: Schriftfarbe abhängig vom Inhalt

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ß

  1. 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

    --
    Mein aktueller Gruß ist:
    Polnisch
    1. ....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>  
      
      
      1. Grüße,
        fast - nur dass du farbe auch noch irgendwie ausgeben musst - einfach so im text tus nix
        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth
        1. ...mhh,
          ich weiß aber nicht weiter?!

          Gruß

          1. 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

            --
            __________________________-

            FirefoxMyth
            1. 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;  
              }  
              
              
              1. @@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'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
                1. 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>  
                  
                  
                  1. ...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>";  
                          	}  
                          ?>  
                    
                    
                    1. @@inspiron:

                      nuqneH

                      ...ich habs! :-), freu!

                      Freu dich nicht zu früh! (Oh, ich wiederhole mich.)

                      Qapla'

                      --
                      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                      (Mark Twain)
                  2. @@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'

                    --
                    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                    (Mark Twain)
                    1. Wie man das verkürzt notiert, hatte ich dir bereits gesagt. Was hattest du an dieser Lösung auszusetzen?

                      ...hää, aber nicht zu mir?!

                      1. @@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'

                        --
                        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                        (Mark Twain)
                    2. 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

                      --
                      Eine Neandertaler-Sippe sitzt in ihrer kalten Höhle. Seufzt der Stammesälteste: "Hoffentlich erfindet bald jemand das Feuer!"
                      1. @@Der Martin:

                        nuqneH

                        Magen leer, Konzentration lässt nach? ;-)

                        Nee, voll. #siesta

                        Qapla'

                        --
                        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                        (Mark Twain)
    2. @@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'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)