Изменить цвет строки таблицы по значению mysql

В моей таблице есть столбец с именем statusid. Если значение этого столбца равно 1, вся строка должна иметь желтый цвет. если значение равно 2, оно должно быть красным. 0 просто по умолчанию белый.

Каков наилучший способ сделать это?

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

0

Решение

Хорошо, прежде всего ваш <thead> не имеет закрытия </tr> для ряда. Во-вторых, я думаю, было бы интересно, если бы вы использовали для этого массив. Кроме того, «наилучшее» может быть определено разными способами, поэтому трудно ответить на него, существует так много способов сделать это в зависимости от того, как вам это действительно нужно (например, если вам нужно использовать его на нескольких страницах).

$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>";
}
1

Другие решения

Лучше всего это сделать с помощью класса CSS, так что позже вы сможете легче перенастроить цвета.

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

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

Затем в вашем CSS определите пару классов:

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

Если вы использовали фреймворк и имели какую-то опцию composer представления, вы могли бы создать метод, который вы могли бы вызвать, и сделать все это чище. Может выглядеть так:

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

Я об этом только задумываюсь, потому что отбрасывание операторов switch в логике вашего представления может очень быстро запутаться.

4