GVKun编程网logo

如何使用datepicker,ajax,php,mysql在两个日期之间生成报告?

12

对于如何使用datepicker,ajax,php,mysql在两个日期之间生成报告?感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于javascript–使用php数组从DatePicker中

对于如何使用datepicker,ajax,php,mysql在两个日期之间生成报告?感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于javascript – 使用php数组从DatePicker中的onSelect中禁用datepicker中的日期和timepicker中的时间、MySQL 如何查询两个日期之间的记录、MySQL-在两个日期之间从数据库中选择数据、MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差的有用信息。

本文目录一览:

如何使用datepicker,ajax,php,mysql在两个日期之间生成报告?

如何使用datepicker,ajax,php,mysql在两个日期之间生成报告?

我被赋予了使用datepicker,ajax,php和mysql在两个给定日期之间生成报告的任务。以下是我的html:

日期明智的报告

        From date: <input type="text" id="fromdate" value="">   To date: <input type="text" id="todate" value="" onChange="showuser(document.getElementById('fromdate').value,document.getElementById('todate').value)">  
        <br>
        <div id="txtHint"><b>User informathions will be listed here.</b></div>

脚本:

<script>
  $(function() {
    $( "#fromdate" ).datepicker();
    $( "#todate" ).datepicker();
  });
  </script>

<script type="text/javascript">
function showUser(fromdate,todate)
{
  if (fromdate =="" && todate=="")
    {
     document.getElementById("txtHint").innerHTML="";
     return;
    }

    if (window.XMLHttpRequest)
     {// code for IE7+,Firefox,Chrome,Opera,Safari
      xmlhttp=new XMLHttpRequest();
     }
  else
    {// code for IE6,IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

  xmlhttp.onreadystatechange=function()
    {
     if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
      }
    }
    xmlhttp.open("GET","bet_date.php?fromdate="+fromdate+"&todate="+todate,true);
    xmlhttp.send();
}
</script>

这是应该生成报告的php文件:bet_date.php

include("database.php"); 
$fromdate=$_GET["fromdate"];
$todate=$_GET["todate"];
 $sql = "SELECT * FROM bookings WHERE date between '$fromdate' and '$todate'";
 $result = mysql_query($sql);

 echo "<table border='1'>
<tr>
<th>id</th>
<th>date</th>
<th>start</th>
<th>name</th>
<th>email</th>
<th>phone</th>
<th>comments</th>
<th>approved</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['id'] . "</td>";
  echo "<td>" . $row['date'] . "</td>";
  echo "<td>" . $row['start'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['email'] . "</td>";
   echo "<td>" . $row['phone'] . "</td>";
    echo "<td>" . $row['comments'] . "</td>";
     echo "<td>" . $row['approved'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

问题是当我同时选择两个日期时什么也没发生。在这种情况下,请帮我。简单的例子将不胜感激。谢谢。

javascript – 使用php数组从DatePicker中的onSelect中禁用datepicker中的日期和timepicker中的时间

javascript – 使用php数组从DatePicker中的onSelect中禁用datepicker中的日期和timepicker中的时间

我有一个datepicker输入和一个timepicker输入,我想用它来安排一个人约会.

当用户点击输入以打开datepicker菜单时,我想使特定的日期时间变灰.我有一个PHP函数,以’Y-m-d H:i:s’字符串格式返回此日期时间数组.但我不知道如何使用该函数的返回值来为javascript函数提供在datepicker中禁用一系列日期所需的功能.

在我的datepicker的onSelect事件中,我希望它根据当天预订的时隙来启用/禁用我的timepicker中的时间选项.但我不知道怎么做.

> Datepicker使用beforeshowDay:禁用预订日期
>用户从datepicker中选择日期
> Datepicker启用/禁用timepicker中的时间

我确实找到了如何在timepicker Here中禁用时间范围.代码示例如下:

$('input.timepicker').timepicker({
    'disableTimeRanges': [
        ['1am', '2am'],
        ['3am', '4:01am']
    ]
});

但这就是我如何禁用时间戳范围内的时间范围.我不知道如何在datepicker的BeforeShowDay中禁用它们?

<script type="text/javascript">   
    $(document).ready(function(){
        $( "#datepickerListAppointments" ).datepicker(
        {
            minDate:'0',
            beforeShowDay:
            function(dt)
            {   // need to disable days other than tuesday and wednesday too.
                return [dt.getDay() === 2 || dt.getDay() === 3, ""];
            },
            onSelect : function(){
                should disable/enable timepicker times from here?
            }
        });

        $('input.timepicker').timepicker({
            timeFormat: 'h:mm p',
            interval: 90,
            minTime: '9',
            maxTime: '10:30am',
            defaultTime: '9',
            startTime: '9:00',
            dynamic: false,
            dropdown: true,
            scrollbar: false                
        });

    });

这是提供日期时间的函数,以防有助于了解.

function get_next_open_appointments($numAppointments, $timeSlottoExclude = "")
{
    global $db;
    $whereCondition = "WHERE FirstName = :null ";
    if ($timeSlottoExclude != "")
    {
        $whereCondition .= "AND AppointmentTime != '$timeSlottoExclude' ";
    }

    $query = "SELECT disTINCT AppointmentTime FROM appointments
              $whereCondition
              ORDER BY AppointmentTime ASC LIMIT $numAppointments";
    $statement = $db->prepare($query);
    $statement->bindValue(':null', "");
    $statement->execute();
    $datesArray = array();
    while ($row = $statement->fetch()) 
    {
        array_push($datesArray, $row['AppointmentTime']);
    }
    $statement->closeCursor();
    return $datesArray;
}

更新:

雨果德卡尔莫指出我正确的方向,我得到适当的禁用/启用日期.但是,我不知道如何使用我在下面的代码中提取的日期时间来禁用/启用timepicker中的时间.

这是新代码:

<script type="text/javascript">   
    $(document).ready(function(){

        // uses PHP to get open appointments, and put them in a javascript array
        <?PHP $datetime_openings = get_next_open_appointments(200);
        $date_openings = array();
        foreach ($datetime_openings as $dt)
        {
            array_push($date_openings, substr($dt,0,10)); // just the date part
        }

        $json_date_openings = json_encode($date_openings);
        echo "var arr_openings = ". $json_date_openings . ";\n";
        ?>

        $( "#datepickerOpenAppointments" ).datepicker(
        {
            minDate:'0',
            beforeShowDay:
            function(dt)
            {
                var string = jQuery.datepicker.formatDate('yy-mm-dd', dt);
                var bFound = (arr_openings.indexOf(string) != -1);
                return [ bFound ]; 
            },
            onSelect : function(){
               //    Should disable/enable time ranges here?
        });

        $('input.timepicker').timepicker({
            timeFormat: 'h:mm p',
            interval: 90,
            minTime: '9',
            maxTime: '10:30am',
            defaultTime: '9',
            startTime: '9:00',
            dynamic: false,
            dropdown: true,
            scrollbar: false                
        });

    });

解决方法:

试试这个,
对不起,我没有使用beforeshowDay
选择日期2017-7-14和2017-7-17并查看

var disabledDateTime = {
  '2017-7-14':[
  	['2:30am','3:00am'],
    ['6:30am','9:00am']
  ],
	'2017-7-17':[
  	['1:00am','3:00am'],
    ['5:30am','7:00am'],
    ['11:30am','2:00pm']
  ]
};

$(function() {
  $('#pickTime').timepicker();
  $('#pickDate').datepicker({
    'format': 'yyyy-m-d',
    'autoclose': true
  }).on('changeDate',function(e){
    var ts = new Date(e.date);
    var m = ts.getMonth()+1;
    var dt = ts.getFullYear() + '-' + m + '-' + ts.getDate();
    var opt = {'disableTimeRanges': []}
    if(typeof(disabledDateTime[dt])!='undefined'){
      $('#pickTime').timepicker('setTime', '');
      opt = {'disableTimeRanges': disabledDateTime[dt]}
    }
    $('#pickTime').timepicker('option',opt);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<link href="https://jonthornton.github.io/jquery-timepicker/lib/bootstrap-datepicker.css" rel="stylesheet"/>
<script src="https://jonthornton.github.io/jquery-timepicker/lib/bootstrap-datepicker.js"></script>
<link href="https://jonthornton.github.io/jquery-timepicker/jquery.timepicker.css" rel="stylesheet"/>
<script src="https://jonthornton.github.io/jquery-timepicker/jquery.timepicker.js"></script>

<input id="pickDate" type="text"/>
<input id="pickTime" type="text"/>

MySQL 如何查询两个日期之间的记录

MySQL 如何查询两个日期之间的记录

MySQL 如何查询两个日期之间的记录

WHERE LogTime BETWEEN ''2010-08-01'' AND ''2010-08-19'' 

oracle 查询 某一时间段内的数据    

select * from 表名 where 时间列 between to_date (''2016-01-01'',''yyyy-mm-dd'') and to_date (''2017-09-18'',''yyyy-mm-dd'')

MySQL-在两个日期之间从数据库中选择数据

MySQL-在两个日期之间从数据库中选择数据

我已将用户注册的日期保存为日期时间,例如 2011-12-06 10:45:36 。我已运行此查询,并且希望此项目 -2011-12-06
10: 45 : 36- 将被选择:

SELECT `users`.* FROM `users` WHERE created_at >= ''2011-12-01'' ANDcreated_at <= ''2011-12-06''

但是不是。存在任何优雅的方式,该如何选择?我最初的想法是2011-12-06 + 1,但是看起来不太好。

答案1

小编典典

您的问题是日期的简短版本使用午夜作为默认设置。因此,您的查询实际上是:

SELECT users.* FROM users WHERE created_at >= ''2011-12-01 00:00:00'' AND created_at <= ''2011-12-06 00:00:00''

这就是为什么您看不到10:45的记录的原因。

更改为:

SELECT users.* FROM users WHERE created_at >= ''2011-12-01'' AND created_at <= ''2011-12-07''

您还可以使用:

SELECT users.* from users WHERE created_at >= ''2011-12-01'' AND created_at <= date_add(''2011-12-01'', INTERVAL 7 DAY)

它将以您要查找的相同时间间隔选择所有用户。

您可能还会发现BETWEEN运算符更具可读性:

SELECT users.* from users WHERE created_at BETWEEN(''2011-12-01'', date_add(''2011-12-01'', INTERVAL 7 DAY));

MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差

MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差

mysql中如何使用datediff函数计算两个日期之间的天数差

在MySQL数据库中,DATEDIFF函数可以方便地计算两个日期之间的天数差。这个函数接受两个日期作为参数,并返回它们之间的天数差。

使用DATEDIFF函数的语法如下:

DATEDIFF(date1, date2)

其中,date1和date2是两个要比较的日期参数。这两个参数可以是日期类型的列名、日期值或者是日期表达式。

下面是一些常见的使用示例:

  1. 计算两个日期之间的天数差:
SELECT DATEDIFF(''2021-12-31'', ''2021-01-01'') AS day_diff;
登录后复制

这个示例中,我们通过DATEDIFF函数计算了2021年12月31日和2021年1月1日之间的天数差。结果会返回365,表示这两个日期之间相差了365天。

  1. 使用日期类型的列名计算天数差:

假设有一个表格orders,其中包含了订单的创建时间和完成时间两个日期字段。我们想要计算每个订单的处理时长。

SELECT order_id, DATEDIFF(complete_date, create_date) AS process_duration
FROM orders;
登录后复制

这个示例中,我们通过DATEDIFF函数计算了订单的完成日期和创建日期之间的天数差,并将结果命名为process_duration。通过这个查询,我们可以得到每个订单的处理时长。

  1. 使用日期表达式计算天数差:
SELECT DATEDIFF(NOW(), ''2021-01-01'') AS days_since_new_year;
登录后复制

这个示例中,我们使用了日期表达式NOW()获取当前日期,并将其与2021年1月1日进行比较,计算了距离新年的天数差。

需要注意的是,DATEDIFF函数返回的结果是一个整数,表示两个日期之间的天数差。如果两个日期中的一个为空,函数将返回NULL。

总结起来,DATEDIFF函数是MySQL中用于计算日期之间天数差的常用函数。无论是计算两个具体日期之间的间隔,还是计算某个日期与当前日期之间的间隔,这个函数都可以帮助我们快速进行计算。

以上就是MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差的详细内容,更多请关注php中文网其它相关文章!

我们今天的关于如何使用datepicker,ajax,php,mysql在两个日期之间生成报告?的分享就到这里,谢谢您的阅读,如果想了解更多关于javascript – 使用php数组从DatePicker中的onSelect中禁用datepicker中的日期和timepicker中的时间、MySQL 如何查询两个日期之间的记录、MySQL-在两个日期之间从数据库中选择数据、MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差的相关信息,可以在本站进行搜索。

本文标签: