Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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_Mysql - Fatal编程技术网

Php 检查当前日期是否在假日日期范围内

Php 检查当前日期是否在假日日期范围内,php,mysql,Php,Mysql,如何检查当前日期是否在假日日期范围内? 我有一个表“假日”,有两个日期列,开始日期和结束日期。用户可以在该范围内定义假日日期。我需要做一个循环,检查假日日期范围内的当前日期,如果是,当前日期变为“+1天”,然后再次检查。到目前为止,我已经做到了: <?php include ("config.php"); $curdate = date('Y-m-d', time()); $res = mysql_query("SELECT * FROM holidays WHERE '$curdate'

如何检查当前日期是否在假日日期范围内? 我有一个表“假日”,有两个日期列,开始日期和结束日期。用户可以在该范围内定义假日日期。我需要做一个循环,检查假日日期范围内的当前日期,如果是,当前日期变为“+1天”,然后再次检查。到目前为止,我已经做到了:

<?php
include ("config.php");
$curdate = date('Y-m-d', time());
$res = mysql_query("SELECT * FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date`");
$resu = mysql_num_rows($res);
 if ($resu == NULL)
      {
      echo "Date is not range";
      }
 else
    {
    echo "Date is in range";
    }
?>

$resu
将包含结果行数。因此,您必须验证
$resu==0

$resu
是否包含结果行数。因此,您必须验证
$resu==0

试试这个

<?php
  include ("config.php");
  $curdate = date('Y-m-d', time());

  while(1) {
     $res = mysql_query("SELECT * FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date`");
     if(!mysql_num_rows($res))
     {
         echo "Date is not range";
         break;
     }
     else
     {
         echo "Date is in range";
         $TS = strtotime($curdate);
         $curdate = date('Y-m-d', strtotime('+1 day', $TS));
     }
  }
?>

试试这个

<?php
  include ("config.php");
  $curdate = date('Y-m-d', time());

  while(1) {
     $res = mysql_query("SELECT * FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date`");
     if(!mysql_num_rows($res))
     {
         echo "Date is not range";
         break;
     }
     else
     {
         echo "Date is in range";
         $TS = strtotime($curdate);
         $curdate = date('Y-m-d', strtotime('+1 day', $TS));
     }
  }
?>

这应该可以:

<?php
include ("config.php");

$curdate = date('Y-m-d', time());

while(1)
{
    $res = mysql_query("SELECT * FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date` LIMIT 1");

    if( !mysql_num_rows($res) )
    {
        echo 'closest data available: ' . $curdate;
        break;
    }

    $ar = mysql_fetch_assoc($res);
    $curdate = date('Y-m-d', strtotime("+1 day", $ar['end_date']));
}
这应该可以:

<?php
include ("config.php");

$curdate = date('Y-m-d', time());

while(1)
{
    $res = mysql_query("SELECT * FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date` LIMIT 1");

    if( !mysql_num_rows($res) )
    {
        echo 'closest data available: ' . $curdate;
        break;
    }

    $ar = mysql_fetch_assoc($res);
    $curdate = date('Y-m-d', strtotime("+1 day", $ar['end_date']));
}

您不需要有循环,所以可以这样做

<?php
   include ("config.php");
   $curdate = date('Y-m-d', time());
   $res = mysql_query("SELECT id FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date`");
   $resu = mysql_num_rows($res);
   if ($resu == 0)
   {
      echo "Date is not range";
   }
   else
   {
      $res = mysql_query("SELECT end_date FROM holidays WHERE end_date > '$curdate' ORDER BY end_date ASC LIMIT 1");
      $resu = mysql_fetch_array($res);

      $next_day = strtotime($resu['end_date']) + 24 * 60 * 60;
      echo 'The next available day is ' . date("Y-m-d", $next_day);
   }
?>

您不需要有循环,所以可以这样做

<?php
   include ("config.php");
   $curdate = date('Y-m-d', time());
   $res = mysql_query("SELECT id FROM holidays WHERE '$curdate' BETWEEN `start_date` and `end_date`");
   $resu = mysql_num_rows($res);
   if ($resu == 0)
   {
      echo "Date is not range";
   }
   else
   {
      $res = mysql_query("SELECT end_date FROM holidays WHERE end_date > '$curdate' ORDER BY end_date ASC LIMIT 1");
      $resu = mysql_fetch_array($res);

      $next_day = strtotime($resu['end_date']) + 24 * 60 * 60;
      echo 'The next available day is ' . date("Y-m-d", $next_day);
   }
?>



您希望我们帮助您做什么?我需要帮助创建一个循环,如果$curdate值在预定义的范围内,则在第二天生成该值。示例:开始日期=2012-08-29结束日期=2012-08-31当前日期=2012-08-30日期在范围内-当前日期=2012-08-31再次检查。。。直到当前日期=2012-09-01,您希望我们帮助您做什么?我需要帮助创建一个循环,使$curdate值在第二天下降到预定义的范围内。示例:开始日期=2012-08-29结束日期=2012-08-31当前日期=2012-08-30日期在范围内-当前日期=2012-08-31再次检查。。。直到当前日期=2012-09-01,或者我可以放入mysql受影响的行,都无所谓。或者我可以放入mysql受影响的行,都无所谓。它输出1346450400,即8月31日,我在假日表中的日期是开始日期('2012-08-29')和结束日期('2012-08-31')。输出应为9月1日。谢谢,我想我们快到了=)它输出1346450400,也就是8月31日,我在假日表中的日期是开始日期('2012-08-29')和结束日期('2012-08-31')。输出应为9月1日。谢谢,我想我们快到了=)它说警告:mysql_num_rows()期望参数1是资源,第5行C:\xampp\htdocs\php_test\test-vreme.php中给出的布尔值日期不在范围内,尽管日期在范围内,范围设置为从8月29日到8月30日。可能您没有名为
id
的字段,因此必须在其中放置一个现有字段。检查您的查询语法是的,它可以工作!非常感谢=)并且它将与预定义的多个假日一起工作,对吗?是的。。我做这个查询是为了处理多个假日的日期范围Dude,help,在Windows上的XAMPP脚本工作正常,它给出了正确的日期,但在Debian上,“下一个可用的日期是1970-01-02”。Debian系统时间正常,mySQL中的NOW()返回正确的日期,我不知道它是什么。它说警告:mySQL_num_rows()希望参数1是资源,第5行C:\xampp\htdocs\php_test\test-vreme.php中给出的布尔值日期不在范围内,尽管日期在范围内,范围设置为从8月29日到8月30日。可能您没有名为
id
的字段,因此必须在其中放置一个现有字段。检查您的查询语法是的,它可以工作!非常感谢=)并且它将与预定义的多个假日一起工作,对吗?是的。。我做这个查询是为了处理多个假日的日期范围Dude,help,在Windows上的XAMPP脚本工作正常,它给出了正确的日期,但在Debian上,“下一个可用的日期是1970-01-02”。Debian系统时间正常,mySQL中的NOW()返回正确的日期,我不知道它是什么。当我在最后一行后回显$curdate时,输出是date在范围2012-08-31 date在范围2012-09-01 date不在范围内所以,就是这样,我只需要将它格式化一点=)谢谢老兄,我投票支持你,你和Matei给了我正确的答案,但我只能选择一个…当我在最后一行后回显$curdate时,输出是Date在范围2012-08-31 Date在范围2012-09-01 Date不在范围内所以,就是这样,我只需要将它格式化一点=)多谢各位,我投票支持你,你和Matei给了我正确的答案,但我只能选择一个。。。