【问题标题】:Highlight table row fetched from db with current day突出显示当前日期从 db 获取的表行
【发布时间】:2015-03-26 19:21:58
【问题描述】:

通过下面的代码,我正在从我的数据库中获取一个表。第一列有一个日历,我想知道是否可以突出显示包含当天的表格行。

我也用这个脚本显示当前日期:

    <?php
        date_default_timezone_set("Europe/Rome");
         echo " Italy: " . date("h:i:sa");
         echo " day " . date("d/m/Y") . "<br>";
          ?>

--- 表格代码 ---

     <?php
     $query = "SELECT * FROM trip"; 
                $result = mysql_query($query);

                echo "<table >"; // start a table tag in the HTML

                while($row = mysql_fetch_array($result)){   //Creates a loop to loop through results
                echo "<tr>
                            <td>" . $row['Day'] . "</td>
                            <td>" . $row['Country'] . "</td>
                            <td>" . $row['Place'] . "</td>
                            <td>" . $row['Flight'] . "</td>
                        </tr>";  //$row['index'] the index here is a field name
                }

                echo "</table>"; //Close the table in HTML
                mysql_close(); //Make sure to close out the database connection

            ?>

---css代码--

table
{
font-family: verdana;

color: white;
background: #003366;
text-align:center;
font-size:16px;
border-collapse: collapse; 

}
tr   {

padding-top:5px;
padding-bottom:5px;
font-size:16px;

}

tr:hover{

color:#003366;
background: white;

}

---添加类 .TODAY

.today { font-family: verdana; background: red; color: #003366; }

【问题讨论】:

  • 将 CSS 类添加到行。
  • $row['Day']的格式化输出是什么?
  • 我的 css 上有这个,因为背景是蓝色的,所以它以白色突出显示该行,但是如何根据当天自动突出显示该行?
  • 您需要使用条件语句并检查该行是否等于所述日期。
  • @gigi 如果你回答了上面的问题会很有帮助。

标签: php mysql html-table


【解决方案1】:

只是改变:

echo "<tr>
    <td>" . $row['Day'] . "</td>
    <td>" . $row['Country'] . "</td>
    <td>" . $row['Place'] . "</td>
    <td>" . $row['Flight'] . "</td>
</tr>";  //$row['index'] the index here is a field name
}

与:

if ($row['Day'] ==  date("Y-m-d") ) {
    echo '<tr class="today">';
} else {
    echo "<tr>";
}
echo "<td>" . $row['Day'] . "</td>
    <td>" . $row['Country'] . "</td>
    <td>" . $row['Place'] . "</td>
    <td>" . $row['Flight'] . "</td>
</tr>";  //$row['index'] the index here is a field name
}

并将 today 类添加到您的 css 文件中。

抱歉,我无法调试这个,但我认为你有一个想法

【讨论】:

  • 我今天添加了背景颜色为红色的类,并按照建议更改了上面的代码,但似乎仍然没有读取类的属性。
  • 看起来一切正常,但和以前一样。该行没有突出显示..,也许我的CSS有问题?我把它贴在上面
  • 其实我用 Country 和它的作品测试过这段代码,所以一定是日期格式的东西
  • 我要求显示生成的 HTML,但您只显示 php 代码。那么你生成的 HTML 是什么???
  • 对不起,我不确定你的意思。这些页面都是php。我可以给你网站的链接:www.followmytrip.net
【解决方案2】:

由于您使用的是 mysql API,我将假设这是一个现有的遗留应用程序。如果不是,我强烈建议您使用 mysqli/PDO API 和准备好的语句。你越早这样做越好,将来你会更高兴你决定离开 mysql。
关于您的问题,您可以通过格式化现有日期/时间戳并将其与 PHP DateTime 类进行比较来做到这一点。

PHP:

$today = new DateTime('today'); // create new DT object representing today

while($row = mysql_fetch_array($result)){
    $dbDate = new DateTime($row['Day']); // converts database date to DT object
    $dbDate = $dbDate->format('Y-m-d'); // format as only date, remove time
    echo ($dbDate == $today) ? "<tr><td class=\"today\">" . $row['Day'] . "</td>" :
    "<tr><td>" . $row['Day'] . "</td>";
    echo "<td>" . $row['Country'] . "</td>
    <td>" . $row['Place'] . "</td>
    <td>" . $row['Flight'] . "</td>
    </tr>";
}

CSS:

.today {
  //the style you want//
}

【讨论】:

  • 嗨,感谢您的回复,关于这个解决方案,我在您张贴在方括号上的第三行中有一个错误:$today = new DateTime['today']; // 创建代表今天的新 DT 对象
  • 已更新,但现在我遇到了未定义变量的问题:行和未定义常量 YYYY 和 mm 和 dd --- 日期格式可能有问题? -- 在我的数据库中,格式是 DATE 而不是 DATETIME,与此有关吗?
  • 糟糕,上面一行忘记了一些撇号,应该是括号而不是括号。应该是固定的。
  • 没有错误但也没有发生任何事情,我正在试图找出原因
【解决方案3】:

使用循环遍历表格并查找单元格是否有当前日期。如果它已经使用 jquery 突出显示单元格。你可以这样做:

 var d = new date();
 table.find('tr td').each(function(d){
   if($(this).text() == d) {
     $(this).css("background", "red");
   }
 });

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多