【问题标题】:Turn SQL date red if it's not the current date如果不是当前日期,则将 SQL 日期变为红色
【发布时间】:2017-10-04 04:07:49
【问题描述】:

我正在创建一个简单的 PHP 待办事项列表。如果不是当前日期,我想将日期变为红色。这是我的代码的一部分,删除了 HTML:

<?php include "connection.php";?>

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

$task = isset($_POST['task']) ? $_POST['task'] : null;
$importance = isset($_POST['importance']) ? $_POST['importance'] : null;
$due_date = isset($_POST['due_date']) ? $_POST['due_date'] : null;
$order = isset($_POST['order']) ? $_POST['order'] : null;

if(isset($task,$importance,$due_date)){
$sql = "INSERT INTO tasks (task, importance, due_date) VALUES ('$task', '$importance', '$due_date')";

$result = mysqli_query($connection, $sql);

if(!$result){
  die("Database query failed.");
}

}

}

if(isset($order)){
$sql = "SELECT * FROM tasks ORDER BY {$order}";
} else {
$sql = "SELECT * FROM tasks";
}
$result = mysqli_query($connection, $sql);

if(!$result){
  die("Database query failed.");
}

$current_date = date("Y-m-d");
if(isset($due_date)!=$current_date){
  $due_date_class="overdue";
} else {
  $due_date_class="not_overdue";
}

?>

<table>
<?php
while($column = mysqli_fetch_assoc($result)){
?>
<tr><td><?php echo $column["task"]?></td><td class="<?php echo $column["importance"] ?>"><?php echo $column["importance"]?></td><td class="<?php echo $due_date_class ?>"><?php echo $column["due_date"]?></td><td><?php echo "<a href='delete_one.php?id=".$column['id']."'>Delete</a>" ?></td></tr>
<?php
}
?>
</table>

<?php include "footer.php";?>

这是不工作的部分。根据我输入的日期,它会将所有行变为红色或黑色:

$current_date = date("Y-m-d");
    if(isset($due_date)!=$current_date){
      $due_date_class="overdue";
    } else {
      $due_date_class="not_overdue";
    }

【问题讨论】:

  • due_date 的价值是什么?
  • due_date 值取决于您在表单中输入的内容,但它是 y-m-d 格式。因此,今天的值为 2017-10-03。

标签: php mysql sql date mysqli


【解决方案1】:
isset($due_date)

应该改为

$due_date

因为isset 会返回值10,这将与日期进行比较,这将一直是false

相反,您可以执行以下操作:

if(isset($due_date))
{
$current_date = date("Y-m-d");
    if($due_date!=$current_date){
      $due_date_class="overdue";
    } else {
      $due_date_class="not_overdue";
    }
}
else
{
   echo "Not a valid Due Date";
}

>>>Demo<<<


关于变量范围。

您需要在最顶部声明​​$due_date_class,以扩大其范围,否则会出错。因为,此变量的范围将被限制为 ifelse

【讨论】:

  • 我刚试过,我的整个页面都坏了,出现了这个错误:注意:未定义的变量:C:\wamp\www\to_do_list\index.php 中的到期日期类在第 95 行。
  • 是的,它破坏了我的页面。
  • @Julian 这可能是其他问题。对我来说,它工作正常。让我添加演示链接
  • @Julian 从您的错误中可以清楚地看出,due_date_class 未定义。这意味着您尚未定义 due_date_class 变量并在某处使用它。
  • @Julian 而且,这意味着,我建议的代码正在运行,而您的代码中有一些问题。您需要相应地检查和更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多