Stahl Florian: Wenn bestimmter Wert Zeile mit Hintergrund versehen

Hallo an alle,

ist es möglich das man folgendes mit PHP hinbekommt:

Ich lese Datensätze aus einer .txt Datei aus. Ergebnis im Browser:

1.2.2007     Sonne scheint     5 Stunden
2.2.2007     Sonne scheint     4 Stunden
3.2.2007     Regen             7 Stunden

MEINE FRAGE:

Kann ich nun mit PHP es so definieren, dass wenn der 2. Wert Regen ausgibt, dass die komplette ausgelesene Zeile dann z.B. die Hintergrundfarbe Grau besitzt?

Hoffe meine Frage ist verständlich.

Mit freundlichen Grüssen
------------------------
Stahl Florian
------------------------

--
Was dich nicht umbringt macht dich nur härter
  1. Hallo Florian,

    Je nachdem, in welcher Form die Daten vorliegen kannst du schreiben

    $td_class = '';
    if($my_array[2] == 'Regen') { // falls das Wort Regen ein Wert im Array ist
    oder
    if(strpos($line, 'Regen') !== false) { // falls du die nur die komplette Zeile hast

    $td_class = ' class="highlight"';
    }

    In der Zelle schreibst du '<td' . $td_class . '>';

    Gruß,

    Dieter

    1. Hallo Dieter,

      Je nachdem, in welcher Form die Daten vorliegen kannst du schreiben

      Als Textdatei "Wert1","Wert2",...

      In der Zelle schreibst du '<td' . $td_class . '>';

      Die Textdatei wird aus einem anderen Programm generiert, da hab ich keinen Einfluss was da drin steht.

      Mit freundlichen Grüssen
      ------------------------
      Stahl Florian
      ------------------------

      --
      Was dich nicht umbringt macht dich nur härter
      1. Mahlzeit,

        Als Textdatei "Wert1","Wert2",...

        Also CSV.

        In der Zelle schreibst du '<td' . $td_class . '>';

        Die Textdatei wird aus einem anderen Programm generiert, da hab ich keinen Einfluss was da drin steht.

        Ähm - Du gibst sie aber doch in HTML aus? D.h. Du liest sie ein, verarbeitest die Werte und gibst sie dann (mit ein bisschen HTML drumherum) wieder aus - oder verstehe ich da irgendwas falsch? Da musst Du doch nix an der Textdatei ändern. Du musst lediglich, wenn der zweite Wert das gewünschte Kriterium erfüllt, der umgebenden Zeile eine bestimmte Klasse verpassen und dieser Klasse dann mit CSS die gewünschten Eigenschaften (Hintergrundfarbe usw.) zuweisen.

        Wenn Du damit nichts anfangen kannst, poste Deinen Quellcode - wildes Herumraten und Spekulieren nützt niemandem etwas.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo EKKI,

          Also CSV.

          Jop.

          Wenn Du damit nichts anfangen kannst, poste Deinen Quellcode - wildes Herumraten und Spekulieren nützt niemandem etwas.

          Hier mal der Code:

          <style type="text/css">

          body {font-family: Verdana; font-size: 11px}
          table {font-family: Verdana; font-size: 11px; border: 0px solid black; border-spacing: 0px; border-collapse: collapse }
          tr {font-family: Verdana; font-size: 11px; border: 0px solid gray}
          td {font-family: Verdana; font-size: 11px; border: 1px solid gray; border-top: 0px; padding: 3px}

          </style>

          <?php
          #Einstellungen
          $datei='Daten/200801.txt';
          $delim=',';
          $quot='"';

          Funktionen

          function InTag($str, $tag, $extra='') {
            return '<'.trim($tag.' '.$extra).'>'.$str.'</'.$tag.">\n";
          }

          Run!

          $iCounter=0; #Hier den Endstand des letzten Monats eingeben!!!!!!!!!!!!!!!!!!!
          $strTabelle='';

          if (! is_readable($datei)) { die("Die Einsatzstatistik für dieses Monat ist noch nicht vorhanden!"); }
          $handle=fopen($datei, 'r') or die("Fatal: Die Datei '$datei' konnte nicht geöffnet werden. (lock?)");

          while ($ar = fgetcsv ( $handle , filesize($datei), $delim, $quot )) {
              if (isset($ar[1])) { # Zur Vermeidung leerer letzter Zeile in der CSV-Datei
                $strZeile=InTag(++$iCounter, 'th', 'class="tr_"' . $iCounter % 2 . '"');

          if($ar[34] == "03.01.") {$einsatzart =  "Verkehrsunfall";}
          else {if($ar[34] == "03.28.") {$einsatzart =  "First Responder";}
          else{if($ar[34] == "03.02.") {$einsatzart =  "Unfall mit Schienenfahrzeugen";}
          else{if($ar[34] == "03.03.") {$einsatzart =  "Unfall mit Luftfahrzeugen";}
          else{if($ar[34] == "03.04.") {$einsatzart =  "Unfall mit Wasserfahrzeugen";}
          else{if($ar[34] == "03.05.") {$einsatzart =  "Absturzgefährdete Person";}
          else{if($ar[34] == "03.06.") {$einsatzart =  "Hochbauunfall/Einsturzgefahr";}
          else{if($ar[34] == "03.07.") {$einsatzart =  "Absturzgefährdete Teile";}
          else{if($ar[34] == "03.08.") {$einsatzart =  "Tiefbau-/Silounfall";}
          else{if($ar[34] == "03.09.") {$einsatzart =  "Unfall m. Aufz&uuml;gen/Maschinen/techn. Ger&auml;ten";}
          else{if($ar[34] == "03.10.") {$einsatzart =  "Wasser-/Eisunfall";}
          else{if($ar[34] == "03.11.") {$einsatzart =  "Wasserschäden/Wasserrohrbruch";}
          else{if($ar[34] == "03.12.") {$einsatzart =  "Hochwasser";}
          else{if($ar[34] == "03.13.") {$einsatzart =  "Sturmschäden";}
          else{if($ar[34] == "03.14.") {$einsatzart =  "Tierunfall";}
          else{if($ar[34] == "03.15.") {$einsatzart =  "Insekten";}
          else{if($ar[34] == "03.16.") {$einsatzart =  "Auslaufender Treibstoff";}
          else{if($ar[34] == "03.17.") {$einsatzart =  "Ölspur";}
          else{if($ar[34] == "03.18.") {$einsatzart =  "Öl auf Gewässer";}
          else{if($ar[34] == "03.19.") {$einsatzart =  "Freiwerden gef&auml;hrlicher Stoffe";}
          else{if($ar[34] == "03.20.") {$einsatzart =  "Vermisste Person";}
          else{if($ar[34] == "03.21.") {$einsatzart =  "Raum-/Wohnungsöffnung";}
          else{if($ar[34] == "03.22.") {$einsatzart =  "Verschliesen v. Raum/Wohnung";}
          else{if($ar[34] == "03.23.") {$einsatzart =  "Wasserversorgung-/Transport";}
          else{if($ar[34] == "03.24.") {$einsatzart =  "Freiwillige Tätigkeit";}
          else{if($ar[34] == "03.25.") {$einsatzart =  "Sonstige Hilfeleistung";}
          else{if($ar[34] == "03.26.") {$einsatzart =  "Einsatz nicht mehr erforderlich";}
          else{if($ar[34] == "03.27.") {$einsatzart =  "Besetzen der NaSt bzw. Kreiseinsatzzentrale (KEZ)";}
          else{if($ar[34] == "11.01.") {$einsatzart =  "Wohnungsbrand";}
          else{if($ar[34] == "11.02.") {$einsatzart =  "Verwaltungs-/Bürobrand";}
          else{if($ar[34] == "11.03.") {$einsatzart =  "Geschäfts-/Warenhausbrand";}
          else{if($ar[34] == "11.04.") {$einsatzart =  "Handwerks-/Kleingewerbebetriebsbrand";}
          else{if($ar[34] == "11.05.") {$einsatzart =  "Hotel-/Gastst&auml;ttenbrand";}
          else{if($ar[34] == "11.06.") {$einsatzart =  "Öffentliches Gebäude";}
          else{if($ar[34] == "11.07.") {$einsatzart =  "Öffentliches Gebäude";}
          else{if($ar[34] == "11.08.") {$einsatzart =  "Garagenbrand";}
          else{if($ar[34] == "11.09.") {$einsatzart =  "Baustellen-/Rohbaubrand";}
          else{if($ar[34] == "11.10.") {$einsatzart =  "Land-/Forstwirtschaftlicher Brand";}
          else{if($ar[34] == "11.11.") {$einsatzart =  "Verkehrsanlage";}
          else{if($ar[34] == "11.12.") {$einsatzart =  "Fahrzeugbrand";}
          else{if($ar[34] == "11.13.") {$einsatzart =  "Kleinteile";}
          else{if($ar[34] == "11.14.") {$einsatzart =  "Lager-/Speditionsbrand";}
          else{if($ar[34] == "11.15.") {$einsatzart =  "Industrie-/Energieversorgungsbrand";}
          else{if($ar[34] == "11.16.") {$einsatzart =  "Flächenbrand";}
          else{if($ar[34] == "11.17.") {$einsatzart =  "Sonstiger Brandeinsatz";}
          else{if($ar[34] == "11.99.") {$einsatzart =  "Unbekannter Brand";}
          else{$einsatzart =  "UNBEKANNT";};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};};}

          $auswahl=array($ar[2], $ar[3], $ar[8], $ar[1], $einsatzart,); # Element die ausgewählt werden sollen

          foreach ($auswahl as $strZelle) {       # Änderung beachten!
                   $strZeile .= InTag(htmlentities($strZelle), 'td');
                }
                $strTabelle.=InTag($strZeile, 'tr');
             }
             }
          print  InTag($strTabelle, 'table', 'border="0"', '');

          ?>

          Die if-Anweisung ist etwas kaotisch. Wird auch noch geändert.

          Mit freundlichen Grüssen
          ------------------------
          Stahl Florian
          ------------------------

          --
          Was dich nicht umbringt macht dich nur härter
          1. Hallo an alle,

            Kann mir denn keiner weiterhelfen? Irgendwie haut des bei mir net so wirklich hin.

            Mit freundlichen Grüssen
            ------------------------
            Stahl Florian
            ------------------------

            --
            Was dich nicht umbringt macht dich nur härter
            1. Hi,

              Kann mir denn keiner weiterhelfen?

              Vielleicht liegt es mehr am Wollen ...

              Irgendwie haut des bei mir net so wirklich hin.

              ... denn deine Problembeschreibung ist immer noch miserabel.
              Du beschreibst ueberhaupt nicht, wo du versucht haettest, das Ganze umzusetzen - sondern klatschtst wieder mal nur deinen unkommentierten Quellcode hier rein. Das liest sich wie "hier ist das ganze Script, bitte von mir gewuenschtes einbauen, Danke" - da musst du dich nicht wundern, wenn hier niemand grosse Lust verspuert, dir zu "helfen".

              Fang's doch mal vernuenftig an:
              "Das ist die Stelle, wo die Zeilen ausgegeben werden: ...
              Da habe ich jetzt versucht, folgendes einzubauen: ...
              Das hat aber nicht das gewuenschte Ergebnis gebracht, sondern: ...
              etc. pp."

              Und verschone uns bitte von deinem *kompletten* Code, sondern beschraenke dich auf den *relevanten* Teil.

              (Und dass da immer noch dieses If-Else-If-Monster drin ist, zu dem dir IIRC schon vor Wochen geraten wurde, wie man das sinnvoller, kuerzer und eleganter umsetzen kann, erhoeht die Hilfsbereitschaft der Mitlesenden vielleicht auch nicht gerade - laesst bei mir zumindest eher ein Perlen-vor-die-Saeue-Gefuehl aufkommen ...)

              MfG ChrisB

              1. Hallo an alle,

                hatte den letzten Beitrag etwas in Eile geschrieben.

                Hier mal genauer:

                Hier wird das Layout der Tabelle definiert welche im unteren Teil des Codes ausgegeben wird.

                <style type="text/css">

                body {font-family: Verdana; font-size: 11px}
                table {font-family: Verdana; font-size: 11px; border: 0px solid black; border-spacing: 0px; border-collapse: collapse }
                tr {font-family: Verdana; font-size: 11px; border: 0px solid gray}
                td {font-family: Verdana; font-size: 11px; border: 1px solid gray; border-top: 0px; padding: 3px}

                </style>

                Hier werden die Elemente definiert welche ausgegeben werden sollen, da in der .txt Datei noch einige andere Elemente vorhanden sind. Die Variable $einsatzart, hier steckt eine if-Anweisung dahinter. Ausgelesen wird das Element $ar[36]. Hier sind Zahlen enthalten, welche mit Hilfe der if-Anweisung durch Stichwörter ersetzt werden.

                $auswahl=array($ar[2], $ar[3], $ar[8], $ar[1], $einsatzart,);

                Im letzten Teil des Codes wird die Tabelle generiert, welche dann ausgegeben wird. Hier habe ich u.a. schon versucht, den Codeschnipsel von "Dieter Raber" einzubinden bzw. zu integrieren, was mir aber nicht gelungen ist.

                foreach ($auswahl as $strZelle) {       # Änderung beachten!

                $strZeile .= InTag(htmlentities($strZelle), 'td');

                }

                $strTabelle.=InTag($strZeile, 'tr');

                }

                }

                print  InTag($strTabelle, 'table', 'border="0"', '');

                Ich hoffe ihr könnt jetzt mit dieser Beschreibung mehr anfangen.

                Mit freundlichen Grüssen
                ------------------------
                Stahl Florian
                ------------------------

                --
                Was dich nicht umbringt macht dich nur härter
                1. Mahlzeit,

                  warum tust Du nicht das, was Dir bereits vorgeschlagen wurde?

                  <style type="text/css">

                  body {font-family: Verdana; font-size: 11px}
                  table {font-family: Verdana; font-size: 11px; border: 0px solid black; border-spacing: 0px; border-collapse: collapse }
                  tr {font-family: Verdana; font-size: 11px; border: 0px solid gray}

                  tr.hervorgehoben { background-color: #ccc; }

                  td {font-family: Verdana; font-size: 11px; border: 1px solid gray; border-top: 0px; padding: 3px}
                  </style>

                  [...]

                  foreach ($auswahl as $strZelle) {       # Änderung beachten!

                  $strZeile .= InTag(htmlentities($strZelle), 'td');

                  }

                  if (wasauchimmer == irgendwas_anderes)  
                  {  
                    $css_class = 'hervorgehoben';  
                  }  
                  else  
                  {  
                    $css_class = '';  
                  }  
                    
                  $strTabelle.=InTag($strZeile, 'tr', "class=\"$css_class\"");
                  

                  }

                  }

                  [...]

                  Ich hoffe ihr könnt jetzt mit dieser Beschreibung mehr anfangen.

                  Nein. Absolut konfus. Und es ist mir unverständlich, was an einer simplen if()-Abfrage nicht zu verstehen ist.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  1. Hallo EKKI,

                    warum tust Du nicht das, was Dir bereits vorgeschlagen wurde?

                    Habe ich ja versucht, nur hatte ich meine Anweisung an der falschen Stelle gesetzt, und somit ist nichts passiert.

                    Ich hoffe ihr könnt jetzt mit dieser Beschreibung mehr anfangen.

                    Nein. Absolut konfus. Und es ist mir unverständlich, was an einer simplen if()-Abfrage nicht zu verstehen ist.

                    Was ist daran denn konfus?

                    Mit freundlichen Grüssen
                    ------------------------
                    Stahl Florian
                    ------------------------

                    --
                    Was dich nicht umbringt macht dich nur härter
                    1. Mahlzeit,

                      Was ist daran denn konfus?

                      Beispiel gefällig?

                      Hier werden die Elemente definiert welche ausgegeben werden sollen, da in der .txt Datei noch einige andere Elemente vorhanden sind. Die Variable $einsatzart, hier steckt eine if-Anweisung dahinter. Ausgelesen wird das Element $ar[36]. Hier sind Zahlen enthalten, welche mit Hilfe der if-Anweisung durch Stichwörter ersetzt werden.

                      Wie soll der geneigte und hilfsbereit Leser, der eben NICHT weiß, was Deine Skripte genau tun, hier irgendwas verstehen? Da sind ja teilweise noch nicht einmal vollständige Sätze vorhanden - geschweige denn so abenteuerliche Beschreibungen wie "eine Funktion, die hinter einer Variablen steckt" ...

                      Bei der Problembeschreibung sollte man sich nicht allzu sehr in unwichtige Details verlieren, sondern es auf das Notwendigste beschränken: KISS-Prinzip

                      Es ist für die Prüfung, ob eine bestimmte Variable einen bestimmten Wert hat (und wenn ja, wird der Wert einer anderen Variable so gesetzt und wenn nicht, dann anders) vollkommen unerheblich, wo die Daten herkommen, wie Du sie auseinanderdröselst, was Du sonst noch damit machst usw. ...

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                      1. Hallo EKKI,

                        hm, ok, werde meine Anfragen mal etwas anders stellen in zukunft.

                        Danke für die Hilfe.

                        Mit freundlichen Grüssen
                        ------------------------
                        Stahl Florian
                        ------------------------

                        --
                        Was dich nicht umbringt macht dich nur härter
  2. Hi,

    Kann ich nun mit PHP es so definieren, dass wenn der 2. Wert Regen ausgibt, dass die komplette ausgelesene Zeile dann z.B. die Hintergrundfarbe Grau besitzt?

    Natuerlich - das ist mit einer simplen IF-Abfrage an der richtigen Stelle kinderleicht zu machen.

    MfG ChrisB