Изменение цвета таблицы на основе значений из базы данных SQL Query с использованием PHP

У меня есть код для создания таблицы из SQL-запроса. Я хотел бы, чтобы цвет фона ячейки представлял значение «rel.cat», которое может быть целым числом от 1 до 8.

<!DOCTYPE HTML> <html> <head> </head> <body> <?php // Connect to the database server $dbcnx = mysql_connect("xxxxx",xxxxx,xxxxx); if (!$dbcnx) { echo( "<P>Database Connection Failed</P>" ); exit(); } // Select the matrix databse database if ( !@mysql_select_db("sustaina_matrix") ) { echo( "<P>Not Connected to Matrix Database</P>" ); exit(); } // Assign the query $query = "SELECT rel.id, rel.cat colourcode FROM rel"; // Execute the query $result = mysql_query($query); if (!$result){ die ("Could not query the database: <br />". mysql_error()); } ?> <table> <tr> <th>Relationship ID</th> <th>Colour ID</th> </tr> <?php // Change colours function getcolour() { if ($catc = "1") return '#000000'; elseif($catc = "2") return '#C0C0C0'; elseif($catc = "3") return '#00FF00'; elseif($catc = "4") return '#0000FF'; elseif($catc = "5") return '#FF99FF'; elseif($catc = "6") return '#FF9900'; elseif($catc = "7") return '#FF0000'; else return '#FFFFFF'; } // Fetch and display the results while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $id = $row["id"]; $catc = $row["colourcode"]; echo "<tr>"; echo "<td>$id</td>"; echo "<td bgcolor='getcolour()'>$catc</td>"; echo "</tr>"; } ?> </table> </body> </html> 

В настоящее время все ячейки красные, и я не знаю, почему.

У вас есть несколько проблем.

  • Передайте и $catc функции getcolour() .
  • Использовать логический оператор ( == ) не присвоить ( = ) в ваших условиях.
  • Правильно выводите результаты функции.

Код:

 function getcolour($catc) { // ... existing code } echo "<td bgcolor='" . getcolour($catc) . "'>$catc</td>"; 

ваши операторы if должны иметь двойной «==».

Вместо

 if ($catc = "1") 

должен быть

 if ($catc == "1") 

Назначьте == всюду во всех ваших условиях if.

А также назначьте параметр функции.

 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $id = $row["id"]; $catc = $row["colourcode"]; echo "<tr>"; echo "<td>$id</td>"; echo "<td bgcolor='getcolour(\"$catc\")'>$catc</td>"; echo "</tr>"; } 

Получить параметр в функции также.

 function getcolour($catc) { 

$catc переменную $catc в свою функцию. т.е.

 function getcolour($catc) { // ... existing code } echo "<td bgcolor='getcolour($catc)'>$catc</td>"; 

Возможно, вам будет легче читать switch()

 function getcolour($catc) { switch($catc) { case 1: return '#000000'; break; case 2: return '#C0C0C0'; break; case 3: return '#00FF00'; break; case 4: return '#0000FF'; break; case 5: return '#FF99FF'; break; case 6: return '#FF9900'; break; case 7: return '#FF0000'; break; default: return '#FFFFFF'; break; } } echo '<td bgcolor="' . getcolour($catc) . '">' . $catc . '</td>'; 

Вы не передаете значение функции getcolour . Эта функция также должна быть изменена, на данный момент оператор if присваивает значение, а не сравнивает значения, поэтому оператор first if всегда будет правдой. Измените каждый на «==», а не «=».

измените это:

 echo "<td bgcolor='getcolour()'>$catc</td>"; 

к этому :

 echo "<td bgcolor='".getcolour($row['catc'])."'>.$row['catc']</td>"; 

Это предполагает, что catc возвращается из запроса как «catc».

  function getcolour($catc){ ..........etc 

и назовите его

 <td bgcolor='",getcolour($catc),"'>$catc</td> 

и не забывайте, что bgcolor устарел =)

Основываясь на всех приведенных здесь абразивных материалах, это окончательный рабочий код:

 <!DOCTYPE HTML> <html> <head> <meta content="en-gb" http-equiv="Content-Language"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <title>Relationships</title> <link href="mainstyles.css" rel="stylesheet" type="text/css"> </head> <body> <?php // Connect to database require($DOCUMENT_ROOT . "connect.php"); // Assign the query $query = "SELECT rel.id, rel.cat colourcode FROM rel"; // Execute the query $result = mysqli_query($link ,$query); if (!$result){ die ("Could not query the database: <br />". mysqli_error()); } ?> <table> <tr> <th>Relationship ID</th> <th>Colour ID</th> </tr> <?php // Change colours function getcolour($catc) { switch($catc) { case 1: return '#000000'; break; case 2: return '#C0C0C0'; break; case 3: return '#00FF00'; break; case 4: return '#0000FF'; break; case 5: return '#FF99FF'; break; case 6: return '#FF9900'; break; case 7: return '#FF0000'; break; default: return '#FFFFFF'; break; } } // Fetch and display the results while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ $id = $row["id"]; $catc = $row["colourcode"]; echo "<tr>"; echo "<td>$id</td>"; echo "<td bgcolor='" . getcolour($catc) . "'>$catc</td>"; echo "</tr>"; } ?> </table> </body> </html>