У меня есть код для создания таблицы из 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>