【问题标题】:How can I set a color of a table header based on a value from MySQL?如何根据 MySQL 中的值设置表头的颜色?
【发布时间】:2015-11-24 15:52:27
【问题描述】:

我有一个 HTML 表格,其中包含一个 TH 的 rowspan = 3

当我提交表单时,我想将 TH 的颜色更改为“绿色”并在 MySQL 中插入一个“submitted = 1”

当我刷新页面时,会设置默认值并返回黑色

我想从 MySQL 中读取并根据那些“提交”的字段设置绿色。

我有一个从数据库中选择的 php 文件,我可以检索“提交”和“事件名称”,但我不知道如何将它们绑定到现有表。

我的 PHP 代码如下所示

if ($result->num_rows > 0) {
    $options= '';
    // output data of each row
   echo ("in");
    while($row = mysqli_fetch_array($result))
    {
        echo "<table>";
        echo "<tr>";

            echo "<th style='color: rgb(0, 128, 0);'>".$row['eventName']."</th>";

        echo "</tr>";
    }
    echo "</table>";

} else {
    echo "0 results";
}
echo $options;

如何将其绑定到存在的表并将它们合并在一起?

【问题讨论】:

  • 我认为查看 SQL 查询会有所帮助。您希望文本颜色为绿色还是单元格背景颜色?
  • $sql = "SELECT DISTINCT eventName FROM SwimMeetData WHERE submit =1";我只希望颜色为“绿色”,就像上面的屏幕截图结果在 UI 中正确显示,但我不知道如何在我的 HTML 代码中更改实际表格
  • 我不明白什么不起作用?改变文本颜色的条件是什么?你指的还有什么表?
  • 只是为了澄清一下。在上面的 SQL 语句中,您说“submitted = 1”,但是在问题中它说“isSubmitted”,基于您可能复制了 SQL 语句的事实,如果属性应该命名为“submmited”,您是否可以更新问题。只是为了一致性
  • 我会从 Javascript 生成所有 HTML 元素,只是为了避免不必要的服务器费用。您可以通过 AJAX 从 PHP 传递您需要的任何数据。

标签: php jquery html mysqli


【解决方案1】:

我认为你想要这样的东西:

if ($result->num_rows > 0) {
        $options= '';
        // output data of each row
       echo ("in");
        while($row = mysqli_fetch_array($result))
        {
            echo "<table>";
            echo "<tr>";
            $color = "color: black;";
            if($row['IsSubmitted']){
             $color = "color: green;";
            }
                echo "<th style='".$color."'>".$row['eventName']."</th>";

            echo "</tr>";
        }
        echo "</table>";

    } else {
        echo "0 results";
    }
    echo $options;

【讨论】:

  • 感谢 Tommy SQL 数据仅在我提交一行时创建,例如问题中的屏幕截图 There are 12 different events in the Table with rowspan 3(如上所示) 查看更新的屏幕截图我希望能够扫描数据库并且只将数据库中的数据(事件)更新为绿色
  • Tommy,如何在数组元素上设置 CSS/样式? '成功:函数(数据){ var res = $('#meetTable tr th#eventNames'); for (var i=0;i =0) { res[i].css("color","blue") } }' 我不能这样做..
  • @user5451365 很酷,如果你愿意,你可以用最终答案更新你的问题,以便下一个可能检查这个问题的人
【解决方案2】:

只需在 while 块内放置一个 if 语句,并让变量默认为黑色,如果提交 == 1 然后将变量设置为绿色

 while($row = mysqli_fetch_array($result))
    {
        echo "<table>";
        echo "<tr>";
        $backgroundColor = "black";
        if($row['submitted'] == 1)
        {
            $backgroundColor = "green";
        }


            echo "<th style='color:".$backgroundColor.";'>".$row['eventName']."</th>";

        echo "</tr>";
    }

【讨论】:

    【解决方案3】:

    根据您的 SQL 查询,WHERE submitted = 1 意味着您只能在记录集中获得 eventName,但不会获得 submitted

    如果您将其更改为:

    SELECT eventName, submitted FROM swimMeetData GROUP BY eventName, submitted;

    您可以使用基于$row['submitted'] 的条件语句。这可能看起来像:

    while($row = mysqli_fetch_array($result)){
        echo "<table>\r\n";
        echo "<tr>\r\n";
        echo "<th style='color: " . ($row['submitted']?"rgb(0, 128, 0)":"rgb(0, 0, 0)") . ";'>{$row['eventName']}</th>\r\n";
        echo "</tr>\r\n";
        echo "</table>\r\n";
    }
    

    【讨论】:

    • OP 对他们遇到的问题有点不清楚。尽管基于 cmets 中提供的 SQL 查询,我相信这是正确的,也是最好的解决方案。 +1
    • 返回的结果很好。我的问题是如何将它们合并到一个已经存在的表中。 (请查看有问题的新截图)我现在正在使用 AJAX,但它正在用返回的 TH 覆盖整个表
    • 如果是这种情况,我们需要查看收集数据和创建表的 JS/JQuery 代码。我们还需要查看现有表格的 HTML。
    【解决方案4】:

    我能够使用 AJAX 调用解决它

     success: function (data) {
                   var res = $('#meetTable tr th#eventNames');
    
                   for (var i=0;i < res.length; i++){
                       if (data.indexOf(res[i].innerText) >=0)
                       {
                           res[i].style.color = 'green'
                       }
    
                   }
    

    这将遍历我的“事件”列表并使用我的后端 MYSQL 检查它们。如果事件在数据库中,它会找到它并将文本颜色设置为绿色。

    【讨论】:

      猜你喜欢
      • 2013-04-27
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多