【问题标题】:Change color of table based on values from SQL Query database using PHP使用 PHP 根据 SQL Query 数据库中的值更改表的颜色
【发布时间】:2012-10-23 18:47:37
【问题描述】:

我有一些代码可以从 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>

目前所有的单元格都是红色的,我不知道为什么。

【问题讨论】:

标签: php html sql


【解决方案1】:

你的 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)
{

【讨论】:

  • 请注意,getcolour 是一个 PHP 函数。因此,您的 echo 声明不正确。
【解决方案2】:

你有几个问题。

  • $catc 传递并接受给函数getcolour()
  • 在您的条件中使用逻辑运算符 (==) 而不是赋值 (=)。
  • 正确输出函数结果。

代码:

function getcolour($catc) {
    // ... existing code
}

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

【讨论】:

  • 这些答案中有几个有帮助,但echo "&lt;td bgcolor='" . getcolour($catc) . "'&gt;$catc&lt;/td&gt;"; 是正确的形式
【解决方案3】:

将变量$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>';

【讨论】:

    【解决方案4】:

    您没有将值传递给getcolour 函数。该函数也需要更改,此时 if 语句分配一个值而不是比较值,因此第一个 if 语句将始终为真。将每一项更改为 '==' 而不是 '='。

    改变这个:

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

    到这个:

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

    这假定 catc 从查询中返回为“catc”。

    【讨论】:

    • @AbhishekSaha : 干杯,没发现 :)
    • 很少有人会回复他们的错误。喜欢过你。 :-)
    【解决方案5】:
     function getcolour($catc){
    ..........etc
    

    并称之为

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

    别忘了 bgcolor 已被弃用 =)

    【讨论】:

      【解决方案6】:

      基于这里给出的所有 awnsers 是最终的工作代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 1970-01-01
        • 2020-09-26
        • 2016-05-27
        相关资源
        最近更新 更多