【问题标题】:give color to specific row of a table acc. to situation为表格 acc 的特定行赋予颜色。到情况
【发布时间】:2015-08-14 13:48:42
【问题描述】:

我从数据库列名“您是否有护照”中创建了一个表,用户回答是或否我想要用户回答是的那一行应该是绿色的,而用户回答是否的那一行是白色的任何人都可以告诉我如何将 css 应用于动态工作的表。

<html>
<head>
<style>
table, th, td {
    border: 1px solid black;
    border-collapse: collapse;
}
</style>
</head>
</html>
<?php 
    $conn = new mysqli("localhost","root","","db_dat");
    $havepassport='';
    $sql="SELECT * from upload;
    $result = $conn->query($sql);
    while($row = $result->fetch_assoc()) {
        $havepassport.='<table>'.'<tr>'.'<td>';
        $havepassport.=$row['having_passport'];
        $havepassport.='</table>'.'</tr>'.'</td>';
        echo $havepassport;
    }
?>

【问题讨论】:

  • 除了相当明显的语法错误,你自己尝试过什么?
  • 我认为$havepassport.='&lt;/table&gt;'.'&lt;/tr&gt;'.'&lt;/td&gt;'; 应该是$havepassport.='&lt;/td&gt;'.'&lt;/tr&gt;'.'&lt;/table&gt;';
  • 如果我尝试过,我一定会发布它,但我仍然没有任何逻辑
  • 我想在有_passport 列ans 是yes 的地方添加颜色
  • 您是否尝试给 css 提供条件?任何 css 代码?

标签: php html mysql css mysqli


【解决方案1】:

签出这个小提琴:https://jsfiddle.net/knkp02Ld/1/

HTML

<table id="mytable">
    <tr>
        <td>User Name</td>
        <td>Yes</td>
    </tr>
    <tr>
        <td>User id</td>
        <td>No</td>
    </tr>
    <tr>
        <td>Whatever</td>
        <td>Yes</td>
    </tr>
</table>

JS

$('#mytable td:contains("Yes")').parent().css('background', 'green');
$('#mytable td:contains("No")').parent().css('background', 'red');

选择所有包含指定文本的元素。

文档:https://api.jquery.com/contains-selector/

编辑

您可以使用 .each 函数的其他方式,如下所示

$('#mytable td').each(function() {
    var value = $(this).html();
    if (value == "Yes") {
        $(this).parent().css("background", "red");
    }
});

【讨论】:

  • @rupesharora:你检查过我的小提琴吗?
【解决方案2】:

试试这个:

<html>
<head>
<style>
table, th, td {
    border: 1px solid black;
    border-collapse: collapse;
}
</style>
</head>
</html>
<?php 
    $conn = new mysqli("localhost","root","","db_dat");
    $havepassport='';
    $sql="SELECT * from upload;
    $result = $conn->query($sql);

    $havepassport.='<table>';

    while($row = $result->fetch_assoc()) {
        $passHaveClass = '';
        if($row['having_passport'] =="yes"){
            $passHaveClass = "greenColor";
        }
        $havepassport.='<tr class='.$passHaveClass.'>';
        $havepassport.= '<td>'.$row['having_passport'].'</td>';
        $havepassport.='</tr>;
    }
    $havepassport.='</table>';

    echo $havepassport;
?>

greenColor 类的 bg 颜色是绿色。

【讨论】:

    【解决方案3】:

    你做错了。您的 while 将新的 table 添加到 HTML。所以,如果你有 100 行,100 tables 将被添加到 DOM 而不是行。

    使用以下:

    PHP

    $sql = "SELECT * from upload";
    $result = $conn -> query($sql);
    
    $havepassport = '<table>';
    while ($row = $result -> fetch_assoc()) {
        $passportClass = $row['having_passport'] == 'Yes' ? 'green' : 'red';
        // ^^^^^^^^^^^ Getting classname depending on the passport value
    
        $havepassport .= '<tr class='.$passportClass.'>'.
        //                            ^^^^^^^^^^^^^^  Add Class Here
                '<td>';
                    $havepassport. = $row['having_passport'];
        $havepassport .= '</td>'.
            '</tr>';
    
    }
    $havepassport .= '</table>';
    echo $havepassport;
    

    CSS:

    .green {
        background: green;
    }
    .red {
        background: red;
    }
    

    【讨论】:

    • 非常非常感谢图沙尔
    猜你喜欢
    • 2013-10-04
    • 2020-05-17
    • 1970-01-01
    • 2021-09-15
    • 2020-07-19
    • 2018-11-24
    • 1970-01-01
    • 2014-09-08
    • 2015-05-18
    相关资源
    最近更新 更多