Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage farblich hervorheben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage farblich hervorheben

    Hallo!
    Wenn ich aus einer SQL einen Wert auslesen möchte und diesen mit einem vordefinierten vergleichen möchte, muß ich doch folgendes tun:

    Code:
     <?php 
      echo '<td style="color:'. ($row[ANZAHL] <100) ? "red" : "green") .'">'; 
    ?> 
    So ich habe nun folgende Tabelle:

    Code:
    $result = mysql_query("SELECT * FROM KSS");
     
    echo "<table>";
    echo "<tr><th>Maschine</th><th>Soll-Konzentration KSS min in%</th><th>Soll-Konzentration KSS mx in %</th><th>ph-Wert min</th><th>ph-Wert max</th><th>Grenzwert Nitrit(ppm)</th><th>Ist Konzentation</th><th>PH Wert aktuell</th><th>Nitritgehalt aktuell</th><th>Temperatur</th><th>Letzter KSS Tausch</th><th>Massnahmen</th><th>Prüfer</th><th>Kalenderwoche</th><th>Jahr</th></tr>";
    
    
        while($row = mysql_fetch_row($result))
            echo "<tr>    
                <td>$row[0]</td>
                <td>$row[3]</td>
                <td>$row[9]</td>
                <td>$row[10]</td>
                <td>$row[11]</td>
                <td>$row[12]</td>
                <td>$row[13]</td>
                <td>$row[14]</td>
                <td>$row[15]</td>
                <td>$row[16]</td>
                <td>$row[17]</td>
                <td>$row[18]</td>
                <td>$row[19]</td>
                <td>$row[20]</td>
                <td>$row[22]</td>
    
    </tr>";
    
    
    
     echo "</table>";
    Nun möchte ich dass $row 14 rot wird wenn der eingetragene 20 übersteigt:
    Code:
    echo '<span class="'.($row[14] > 20 ? 'red' : 'green').'">'.$row[14].'</span>';
    soweit richtig?

    Also wie kann ich es dann in meiner Tabelle anzeigen lassen?
    So gehts nämlich nicht:

    Code:
           echo "<tr>    
           <td>  <span class="'.($row[14] > 20 ? 'red' : 'green').'">'.$row[14].'</span></td>
          
                
    
    </tr>";
    http://www.krassevideos.net
    http://www.mein-neues-iphone.de
    http://www.webkatalog.es

  • #2
    Zitat von tonkelz Beitrag anzeigen
    Also wie kann ich es dann in meiner Tabelle anzeigen lassen?
    So gehts nämlich nicht:

    Code:
           echo "<tr>    
           <td>  <span class="'.($row[14] > 20 ? 'red' : 'green').'">'.$row[14].'</span></td>
    </tr>";
    Probier mal class='" -> tausche das einfache Anführungszeichen mit dem doppelten Anführungszeichen. Du hast ja schon mit dem doppelten Az angefangen, also musst du es so auch beenden.

    Kommentar


    • #3
      Warum baust du da ein span ein, anstatt dem td die entsprechende Klasse zu setzen?
      Und noch ein Hinweis:

      16.14. Warum soll ich nicht SELECT * schreiben?
      http://net.co.at/doc/howto/docs/dclp...ql-select.html

      Außerdem kann man bei deinem Quellcode nur hoffen, dass sich an der Tabelle keine Reihenfolge ändert, denn sonst bricht dein Script zusammen.
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar


      • #4
        1. Alternativer Syntax von PHP wenn viel HTML und PHP gemischt wird, um den Code besser lesbar zu machen.

        2. Abfrage für den Status mitten im Code entfernen und eine eigene Funktion (getColumnColor, besserer Funktionsname wäre sinnvoll) dafür erstellen, damit diese auch sinnvoll erweitert werden kann.

        3. CSS-Klassen von nichtssagenden Namen (red, green) auf einen Status ändern, der erst einmal nichts über die Anzeige aussagt (success, warning, danger). Klassennamen und id-Bezeichner auf dciwam oder Empfehlungen für gute ID- und Klassennamen auf dr.web.

        4. PDO für die Datenbankzugriffe verwenden, da diese durch Prepared Statements.

        5. Anstatt die Spalten im Ergebnis der Datenbankabfrage per *_row besser per *_assoc abrufen, da man dann per Spaltennamen übersichtlich darauf zugreifen kann.

        PHP-Code:
        <?php

        function getColumnColor($row) {
            if(
        $row[14] < 10) {
                return 
        'alert-success';
            }
            if(
        $row[14] < 20) {
                return 
        'alert-warning';
            }
            return 
        'alert-danger';
        }

        $result mysql_query("SELECT * FROM KSS");

        ?>

        <table>
            <thead>
                <tr>
                    <th>Maschine</th>
                    <th>Soll-Konzentration KSS min in%</th>
                    <th>Soll-Konzentration KSS mx in %</th>
                    <th>ph-Wert min</th><th>ph-Wert max</th>
                    <th>Grenzwert Nitrit(ppm)</th>
                    <th>Ist Konzentation</th>
                    <th>PH Wert aktuell</th>
                    <th>Nitritgehalt aktuell</th>
                    <th>Temperatur</th>
                    <th>Letzter KSS Tausch</th>
                    <th>Massnahmen</th>
                    <th>Prüfer</th>
                    <th>Kalenderwoche</th>
                    <th>Jahr</th>
                </tr>
            </thead>
            <tbody>
                <?php while($row mysql_fetch_row($result)): ?>
                    <tr>    
                        <td><?php echo htmlspecialchars($row[0]); ?></td>
                        <td><?php echo htmlspecialchars($row[3]); ?></td>
                        <td><?php echo htmlspecialchars($row[9]); ?></td>
                        <td><?php echo htmlspecialchars($row[10]); ?></td>
                        <td><?php echo htmlspecialchars($row[11]); ?></td>
                        <td><?php echo htmlspecialchars($row[12]); ?></td>
                        <td><?php echo htmlspecialchars($row[13]); ?></td>
                        <td class="<?php echo getColumnColor($row); ?>"><?php echo htmlspecialchars($row[14]); ?></td>
                        <td><?php echo htmlspecialchars($row[15]); ?></td>
                        <td><?php echo htmlspecialchars($row[16]); ?></td>
                        <td><?php echo htmlspecialchars($row[17]); ?></td>
                        <td><?php echo htmlspecialchars($row[18]); ?></td>
                        <td><?php echo htmlspecialchars($row[19]); ?></td>
                        <td><?php echo htmlspecialchars($row[20]); ?></td>
                        <td><?php echo htmlspecialchars($row[22]); ?></td>
                    </tr>
                <?php endwhile; ?>
            </tbody>
        </table>

        Kommentar


        • #5
          Ergänzung zu Punkt 4: Der wichtige Aspekt dort ist, dass die mysql-Erweiterung von PHP (nicht das Datenbanksystem selbst) veraltet ist.

          - http://php-de.github.io/jumpto/faq/#deprecated-mysql (derzeit letzter Eintrag)

          Es muss nicht PDO sein. Ich ziehe das zwar auch vor, weil ich das API praktischer und flexibler finde, aber mysqli geht grundsätzlich auch. Prepared Statements kann man nutzen, die sind aber kein Muss.

          Ich würde bei htmlspecialchars immer den encoding-Parameter setzen, weil die PHP-Leute den Defaultwert an der Stelle in jüngerer Vergangenheit zweimal verändert haben.

          Vor 5.4: ISO-8859-1
          Ab 5.4: UTF-8
          Ab 5.6: ini_get("default_charset")

          Eine recht sinnvolle Escaping-Funktion nach HTML sieht so aus:

          PHP-Code:
          $e = function ($s) {
              return 
          htmlspecialchars(
                  
          $s,
                  
          ENT_QUOTES ENT_HTML5 ENT_SUBSTITUTE ENT_DISALLOWED,
                  
          'UTF-8'
              
          );
          }; 
          (Hier mal in eine $e-Closure gepackt, weil sicher niemand Lust hat, all das überall im Code stehen zu haben.)

          Kommentar


          • #6
            Code:
            <?php 
             
            function getColumnColor($row) { 
                if($row[14] < 10) { 
                    return 'alert-success'; 
                } 
                if($row[14] < 20) { 
                    return 'alert-warning'; 
                } 
                return 'alert-danger'; 
            } 
             
            $result = mysql_query("SELECT * FROM KSS"); 
             
            ?> 
            Das war mal eine sehr große Hilfe

            Aber wie definiere ich dann die Farbe noch, bzw. getcolumn color woher holt der sich die Farbe?
            http://www.krassevideos.net
            http://www.mein-neues-iphone.de
            http://www.webkatalog.es

            Kommentar


            • #7
              Zitat von Blar Beitrag anzeigen

              4. PDO für die Datenbankzugriffe verwenden, da diese durch Prepared Statements.


              Wenn ich es aber so mache:
              Code:
              // Datenbank-Host
                $dbHost = "localhost";
              
                // Datenbank-Name
                $dbName = "xxxx";
              
                // Datenbank-Benutzer
                $dbBenutzer = "xxxxx";
              
                // Datenbank-Passwort
                $dbPasswort = "cccccccc";
              
                // Verbinden
                $DB = new PDO("mysql:host=" . $dbHost . ";dbname=" . $dbName,  $dbBenutzer, $dbPasswort);

              Bekomme ich keine Daten abgefragt
              http://www.krassevideos.net
              http://www.mein-neues-iphone.de
              http://www.webkatalog.es

              Kommentar


              • #8
                Wie sieht denn der Code zur Abfrage aus? Das ist ja bislang erst mal nur die Verbindung.

                Kommentar


                • #9
                  Zitat von mermshaus Beitrag anzeigen
                  Wie sieht denn der Code zur Abfrage aus? Das ist ja bislang erst mal nur die Verbindung.
                  Code:
                  <?php
                  
                  // Datenbank-Host  
                  $dbHost = "localhost";   
                   // Datenbank-Name 
                    $dbName = "xxxx";    
                  // Datenbank-Benutzer   
                  $dbBenutzer = "xxxxx";    
                  // Datenbank-Passwort  
                   $dbPasswort = "cccccccc";    
                  
                  // Verbinden   $DB = new PDO("mysql:host=" . $dbHost . ";dbname=" . $dbName,  $dbBenutzer, $dbPasswort);
                  
                  
                  function getColumnColor($row) {
                      if($row['phwert_aktuell'] < 20) {
                          return '$farbe = "#FFFFFF"';
                      }
                      if($row['phwert_aktuell'] > 21) {
                          return '$farbe = "#FF0000"';
                      }
                      return 'alert-danger';
                  }
                  
                  $result = mysql_query("SELECT * FROM KSS");
                  
                  ?>
                  
                  <table border="1" cellspacing="1" cellpadding="1" style="vertical-align: top; margin: 0px auto;">
                      <thead>
                          <tr>
                              <th>Maschine</th>
                              <th>Soll-Konzentration KSS min in%</th>
                              <th>Soll-Konzentration KSS mx in %</th>
                              <th>ph-Wert min</th><th>ph-Wert max</th>
                              <th>Grenzwert Nitrit(ppm)</th>
                              <th>Ist Konzentation</th>
                              <th>ph-Wert aktuell</th>
                              <th>Nitritgehalt aktuell</th>
                              <th>Temperatur</th>
                              <th>Letzter KSS Tausch</th>
                              <th>Massnahmen</th>
                              <th>Prüfer</th>
                              <th>Kalenderwoche</th>
                              <th>Jahr</th>
                          </tr>
                      </thead>
                      <tbody>
                          <?php while ($row = mysql_fetch_array($result, MYSQL_ASSOC)): ?>
                              <tr>    
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['maschinenbezeichung']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['Sollkonzentration_KSS_min']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['Sollkonzentration_KSS_max']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['phWert_min']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['phWert_max']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['Grenzwert_Nitrit']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['istkonzentration_kss']); ?></td>
                                  <td <td ALIGN="CENTER" class="<?php echo getColumnColor($row); ?>"><?php echo htmlspecialchars($row['phwert_aktuell']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['nitritgehalt_aktuell']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['temperatur']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['letzter_ksstausch']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['massnahmen']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['pruefer']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['kalenderwoche']); ?></td>
                                  <td ALIGN="CENTER"><?php echo htmlspecialchars($row['jahr']); ?></td>
                              </tr>
                          <?php endwhile; ?>
                      </tbody>
                  </table>
                  
                  
                  http://www.krassevideos.net
                  http://www.mein-neues-iphone.de
                  http://www.webkatalog.es

                  Kommentar


                  • #10
                    Ähm, was stellst du da an??? Du musst dich schon entscheiden, ob du PDO oder MySQL(i) nutzen willst, mischen geht nicht.

                    Richtig debuggen

                    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
                    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
                    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
                    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
                    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                    Kommentar


                    • #11
                      probiers mal so:
                      PHP-Code:

                      <td style="color:<?=getColumnColor($row['phwert_aktuell']);?>;"> //der funktion getColumnColor() nicht das ganze array übergeben sondern nur den farbwert
                        <?=htmlspecialchars($row['phwert_aktuell']);?>
                      </td>


                      function getColumnColor($wert) {
                          if($wert < 20) {
                              return "#FFFFFF"; // ohne $farbe
                          }
                          if($wert > 21) {
                              return "#FF0000"; // ohne $farbe
                          }
                          // return 'alert-danger'; -> was ist das?? :lol:
                      }

                      Kommentar


                      • #12
                        Zitat von antic_schweiz Beitrag anzeigen
                        probiers mal so:
                        PHP-Code:

                        <td style="color:<?=getColumnColor($row['phwert_aktuell']);?>;"> //der funktion getColumnColor() nicht das ganze array übergeben sondern nur den farbwert
                          <?=htmlspecialchars($row['phwert_aktuell']);?>
                        </td>


                        function getColumnColor($wert) {
                            if($wert < 20) {
                                return "#FFFFFF"; // ohne $farbe
                            }
                            if($wert > 21) {
                                return "#FF0000"; // ohne $farbe
                            }
                            // return 'alert-danger'; -> was ist das?? :lol:
                        }

                        SUUUUUUPPPPPERRR! Hat funktioniert!!!!!!!!!!Der Sonntag ist gerettet!

                        Code:
                        // return 'alert-danger'; -> was ist das?? :lol:
                        


                        Hatte ich übernommen von

                        Blar
                        http://www.krassevideos.net
                        http://www.mein-neues-iphone.de
                        http://www.webkatalog.es

                        Kommentar


                        • #13
                          @antic_schweiz
                          Und was passiert, wenn der Wert genau 20 ist?

                          @tonkelz
                          Zeige dein komplettes Script, wir wissen sonst nicht, was du an anderen Stellen falsch gemacht hast.
                          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                          Kommentar


                          • #14
                            Zitat von uha Beitrag anzeigen
                            @antic_schweiz
                            Und was passiert, wenn der Wert genau 20 ist?

                            @tonkelz
                            Zeige dein komplettes Script, wir wissen sonst nicht, was du an anderen Stellen falsch gemacht hast.
                            Hatte es tatsächlich an der falschen Stelle eingetragen.

                            Aber weitere Frage:

                            Wenn ich nun 3 Werte vergleichen möchte muß ich dann if..else benutzen?

                            das hier funktioniert nämlich nicht:

                            Code:
                            //Markierung erhöhter Wert KSS Messung
                            function KSSColor($wert) {
                                if($wert <= 8) {
                                    return "#000000"; // schwarz
                                }
                                if($wert > 8) {
                                    return "#FF0000"; // rot
                                }
                               if($wert <= 3) {
                                    return "#00FF00"; // grün
                                }
                            }
                            http://www.krassevideos.net
                            http://www.mein-neues-iphone.de
                            http://www.webkatalog.es

                            Kommentar


                            • #15
                              Wenn $wert <= 3 ist, ist er auch <= 8. Das heißt, in dem Fall wäre gleich die erste Bedingung erfüllt. Du müsstest die letzte Bedingung vorher prüfen.

                              Kommentar

                              Lädt...
                              X