2017-05-09 5 views
0

In meiner Tabelle habe ich eine Spalte namens statusid. Wenn der Wert dieser Spalte 1 ist, muss die gesamte Zeile gelb dargestellt werden. Wenn der Wert 2 ist, muss er rot sein. 0 ist nur Standardweiß.Ändern Tabelle Zeile Farbe von Mysql Wert

Was ist der beste Weg, dies zu tun?

<div class="container-fluid"> 
    <table id="table_id" class="cell-border order-column row-border hover compact" width="100%"> 
     <thead> 
      <tr> 
      <th width="2%">ID</th> 
      <th width="6%">Debiteur</th> 
      <th width="10%">Klantnaam</th> 
      <th width="3%">Aantal Pallets</th> 
      <th width="3%">Totaal Gewicht</th> 
      <th width="30%">PB Nummers</th> 
      <th width="10%">Toevoegdatum</th> 
      <th width="1%">statusid</th> 
     </thead> 
     <tbody> 
      <!-- Fetch from db --> 
      <!-- Connect to db-->> 
     <?php 
     $conn = mysqli_connect("localhost","root","","export") or die("Error in Connection"); 

     $query = mysqli_query($conn, "SELECT exportid, deb_nmr, cost_name, numb_pal, tot_weight, pb_s, date, statusid FROM export_tabel"); 

      while ($result = mysqli_fetch_array($query)) { 
       echo "<tr> 
        <td>".$result['exportid']."</td> 
        <td>".$result['deb_nmr']."</td> 
        <td>".$result['cost_name']."</td> 
        <td>".$result['numb_pal']."</td> 
        <td>".$result['tot_weight']."</td> 
        <td>".$result['pb_s']."</td> 
        <td>".$result['date']."</td> 
        <td>".$result['statusid']."</td> 
       </tr>"; 
      } 

      ?> 
     </tbody> 
    </table> 
    </div> 

Antwort

1

Ok, vor allem Ihre <thead> hat keine Schließung </tr> für die Zeile. Zweitens, ich denke, es wäre interessant, wenn Sie ein Array dafür verwenden würden. Plus, "am besten" könnte auf viele Arten definiert werden, so ist es schwer zu beantworten, es gibt so viele Möglichkeiten, dies zu tun, je nachdem, wie Sie es wirklich brauchen (zum Beispiel, wenn Sie es auf mehreren Seiten verwenden müssen).

$colors = ['white', 'yellow', 'red']; // or any other string, like a HEX color or a class name (which would change the code below, but do as you wish or prefer) 
while ($result = mysqli_fetch_array($query)) { 
    echo "<tr style='background-color: ".$colors[$result['statusid']].";'> 
     <td>".$result['exportid']."</td> 
     <td>".$result['deb_nmr']."</td> 
     <td>".$result['cost_name']."</td> 
     <td>".$result['numb_pal']."</td> 
     <td>".$result['tot_weight']."</td> 
     <td>".$result['pb_s']."</td> 
     <td>".$result['date']."</td> 
     <td>".$result['statusid']."</td> 
    </tr>"; 
} 
+0

Das funktioniert gut für mich! Einzige Sache ist: Hinweis: Undefinierter Index: in /Applications/XAMPP/xamppfiles/htdocs/export/datatables.php in Zeile 123. Das ist der folgende Code: echo " – Rubinjo13

+1

Das liegt daran, dass die von Ihrer Spalte angegebene Zahl nicht mit einem Index im Array übereinstimmt. Beachten Sie, dass das Array drei Elemente hat und ihre Indizes 0, 1 und 2 sind. Wenn also in Ihrer Datenbank eine Spalte mit einer 'statusid' vorhanden ist, die nicht 0, 1 oder 2 ist, wird dieser Fehler angezeigt. Sie können dies auf viele verschiedene Arten tun, indem Sie beispielsweise Ihrem Array einen bestimmten Index geben zu sagen: '[0 => 'weiß', 23 => 'rot']'. Bei diesem Array steht die 'statusid' von 0 für Weiß und 23 für Rot. Sie können nach Arrays auf php.net suchen – Zeke

4

Dies geschieht am besten mit einer CSS-Klasse, auf diese Weise können Sie später die Farben einfacher neu konfigurieren.

switch ((int) $result['statusid']) { 
    case 1: 
     $rowClass = "row-yellow"; 
     break; 
    case 2: 
     $rowClass = "row-red"; 
     break; 
    default: 
     $rowClass = "row-default"; 
} 

echo "<tr class='".$rowClass."'> 

Dann in Ihrem CSS, definieren ein paar Klassen:

.row-yellow { 
    background-color: yellow; 
} 
.row-red { 
    background-color: red; 
} 

Wenn Sie einen Rahmen verwendet haben und hatte eine Art Ansicht Komponist Option zur Verfügung, eine Methode machen könnte, die Sie nennen könnte und mach alles sauberer. aussehen könnte:

echo "<tr class='".$view->getStatusColor($result['statusid'])."'> 

ich nur, dass so etwas bringen, darüber nachzudenken, weil dropping switch-Anweisungen in Ihrer Sicht Logik wirklich schnell unübersichtlich werden kann.

Verwandte Themen