【问题标题】:How to highlight a row of my table如何突出显示我的表格的一行
【发布时间】:2016-03-07 18:29:56
【问题描述】:

当我从数据库中读取表格的内容时,如何突出显示以这种方式打印的表格行的背景颜色?有时两排。要突出显示的条件是第 3 列的值。

<?php               
echo "<table id='allocation' class='inlineTable'>";  //style='border: solid 1px black;'
echo "<tr>";
echo "<th class=\"row-1 a_user\">User </th>";
echo "<th class=\"row-2 a_destination\">User </th>";
echo "<th class=\"row-3 a_tremaining\">Time Remaining </th>";
echo "<col = width: 3em />";
echo "</tr>";
echo "<col = width: 3em />";
class TableRows extends RecursiveIteratorIterator {
    function __construct($it) { 
     parent::__construct($it, self::LEAVES_ONLY);
    }
    function current() {
     return "<td style='width: 100px; border: 1px solid black;'>" . parent::current(). "</td>";
    }
    function beginChildren() {
     echo "<tr>";
    }
    function endChildren() {
     echo "</tr>" . "\n";
    }       
}           

$servername = "localhost";
$dbname = "mydb";
$user = 'root';
$port = 3306;

try{
    $conn = new PDO("mysql:host=$servername;port=$port;dbname=$dbname", $user);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);         
    $sql_fetch = $conn->prepare("SELECT user_ID, destination, trem FROM reservation_table");
    $sql_fetch->execute();
    $result = $sql_fetch->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new TableRows2(new RecursiveArrayIterator($sql_fetch->fetchAll())) as $k=>$v) {
        echo $v;
    }
}
catch(PDOException $e) {
     echo "Error: " . $e->getMessage();
}

echo "</table>";
$conn = null;
?>

我可以请你帮忙吗?当trem(第三列)中的值达到 00:00 时,我想突出显示或闪烁该行。我现在的 CSS 非常基本/简单:https://jsfiddle.net/8Lfj3h0j/

真的需要帮助。

【问题讨论】:

    标签: php mysql css


    【解决方案1】:

    由于我还不能发表评论,我打算这样问。你能说得更具体一点吗? trem 值看起来像一个计数器。因此,您要做的是使用 javascript 检查行的值,如果值为 00.00,则使用 javascript 更改 css 类。

    $('#elementId').toggleClass('yourCSSclass');
    

    如果这不是你的意思,那么请随时纠正我或澄清你的问题:)

    编辑: 在您的 php 函数“current”中,您可以使用 if 语句检查值是否为 00.00。如果值为 00.00,则调用 javascript 函数 它应该是这样的:

    function current() {
    if(parent::current()=="00.00"){
    echo '<script type="text/javascript">'
       , '$('#elementId').toggleClass('yourCSSclass');'
       , '</script>'
    ;}else{}
         return "<td style='width: 100px; border: 1px solid black;'>" . parent::current(). "</td>";
        }
    

    注意:我对 RecursiveIterator 类的经验很少,所以我不能确定 parent::current()=="00.00" 会起作用,但您应该了解检查值和调用 js 的一般概念功能。

    编辑: 从评论中复制粘贴

    <?php
    
     $i=0; while($array=sqlsrv_fetch_array($data)){ 
     $counterVariable=parent::current();
      //not sure if the above line works this is just theory
     ?>
     <tr data-id="<?php echo $i; ?>">
          <td><?php echo $array['Product_id']; ?></td> 
          <td><?php echo $array['Product_name']; ?></td>
          <td><?php echo $counterVariable ?></td> 
    </tr> 
    <?php $i=$i+1; }?>
    

    【讨论】:

    • 嗨@ThrowingDwarf,我还没有实现倒数计时器,因为我还不知道该怎么做。我希望做这样的事情:jsfiddle.net/htsm45x4 但我不确定如何在第三列打印倒计时时钟,然后在我的时间到时突出显示该行。
    • 我用 jsfiddle 试过,但不知何故它不允许我通过 javascript 改变颜色,这很奇怪..
    • 如果你是我,你会怎么做? :( 我找到了另一个计时器示例,也许我们可以使用:jsfiddle.net/14b76gnt 即使我现在无法更改颜色,我现在正在寻找的是一种在每行的最后一列打印倒计时时钟的方法。
    • 就我个人而言,我会一次回显一整行(对于 等没有函数),这样我可以生成每一行并给他们一个我可以给的“data-id”参数一个值(这本质上是一个 id)。然后您可以在最后一个单元格/td 中回显计时器值。这样你就不需要花哨的代码来检查每一行了。
    • while($array=sqlsrv_fetch_array($data)){ ?>
    【解决方案2】:
     #allocation tr:nth-child(3n+3) {  
          color: #ccc;
        }
    

    对每突出显示的第三列使用此 css。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签