Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:比较日期_Php_Sql_Date - Fatal编程技术网

PHP:比较日期

PHP:比较日期,php,sql,date,Php,Sql,Date,我遇到了以下问题: 我想将今天的日期与数据库中的一些日期进行比较,然后如果它尚未过期,则显示一些。。。但是,如果表中的所有日期都已过期,则显示类似“此时没有安排讲座,请再次返回”的内容 至于第一件事,这没问题,但我不能在没有任何未来日期的地方显示文本 这是密码 表: id、已发布日期、课程日期、标题、正文 $sql = "SELECT * FROM L ORDER BY L.dateposted DESC;"; $result = mysql_qu

我遇到了以下问题:

我想将今天的日期与数据库中的一些日期进行比较,然后如果它尚未过期,则显示一些。。。但是,如果表中的所有日期都已过期,则显示类似“此时没有安排讲座,请再次返回”的内容

至于第一件事,这没问题,但我不能在没有任何未来日期的地方显示文本

这是密码

表: id、已发布日期、课程日期、标题、正文

$sql = "SELECT *
        FROM L
        ORDER BY L.dateposted DESC;";
        $result = mysql_query($sql) or die(mysql_error());
        while($row = mysql_fetch_assoc($result))
        {
            $exp_date = $row['date_course']; 
            $todays_date = date("Y-m-d"); 
            $today = strtotime($todays_date); 
            $expiration_date = strtotime($exp_date); 
            if ($expiration_date >= $today)
            {
                echo "<a href='courses.php'>" . $row['title']. "</a>";
                echo "</br>";   
            }
        }
$sql=“选择*
从L
以L.dateposted DESC.订购;
$result=mysql\u query($sql)或die(mysql\u error());
while($row=mysql\u fetch\u assoc($result))
{
$exp_date=$row['date_course'];
$todays_date=日期(“Y-m-d”);
$today=标准时间($todays\u date);
$expiration\u date=strottime($exp\u date);
如果($expiration\u date>=$today)
{
回声“;
回声“
”; } }
有几种方法。一种是将日期比较作为查询的一部分。如果未选择任何行,则显示您的特殊消息

否则,您可以设置一个标志,如

$has_courses = false;
while ($row = fetch() {
   $has_courses = true;
   ...
}
if (!$has_courses) { echo 'No courses'; }

尽管通过改进查询,您可以更高效地完成此操作,但以下是您请求的特定修复:

$sql = "SELECT *
        FROM L
        ORDER BY L.dateposted DESC;";
        $result = mysql_query($sql) or die(mysql_error());
        $out = false;
        while($row = mysql_fetch_assoc($result))
        {
            $exp_date = $row['date_course']; 
            $todays_date = date("Y-m-d"); 
            $today = strtotime($todays_date); 
            $expiration_date = strtotime($exp_date); 
            if ($expiration_date >= $today)
            {
                $out = true;
                echo "<a href='courses.php'>" . $row['title']. "</a>";
                echo "</br>";   
            }
        }
        if (!$out)
          echo 'Nothing found.';
$sql=“选择*
从L
以L.dateposted DESC.订购;
$result=mysql\u query($sql)或die(mysql\u error());
$out=false;
while($row=mysql\u fetch\u assoc($result))
{
$exp_date=$row['date_course'];
$todays_date=日期(“Y-m-d”);
$today=标准时间($todays\u date);
$expiration\u date=strottime($exp\u date);
如果($expiration\u date>=$today)
{
$out=true;
回声“;
回声“
”; } } 如果(!$out) 回声“什么也没找到”;
我假设您使用的是MySQL。对您的查询和代码进行一些小的更改应该可以实现这一点。您肯定应该在查询中而不是代码中进行这种过滤

$sql = "SELECT *
    FROM L
    WHERE date_course < NOW() AND dateposted < NOW()
    ORDER BY L.dateposted DESC;";

$result = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result) > 0)
{
    while ($row = mysql_fetch_assoc($result))
    {
        echo "<a href='courses.php'>" . $row['title']. "</a>";
        echo "</br>";
    }
}
else
{
    echo "No results available";
}
$sql=“选择*
从L
其中date_course0)
{
while($row=mysql\u fetch\u assoc($result))
{
回声“;
回声“
”; } } 其他的 { 回显“无可用结果”; }
您知道SQL有一个特殊的语法WHERE子句,它允许您为select指定条件