小编典典

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

ajax

我被赋予了使用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>";

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


阅读 233

收藏
2020-07-26

共1个答案

小编典典

将您的html更改为:您的输入showUser()没有showuser()更改onchage="showUser()".

onchange事件,无论在这两个领域,他们将触发inputs.so。如果您仅从前端发送日期,并且在数据库中的date列的类型为datetime,则在sql中使用date(date)。

"SELECT * FROM bookings WHERE date(date) between '$fromdate' and '$todate'";


  From date: <input type="text" id="fromdate" value="" onChange="showUser()">   To date: <input type="text" id="todate" value="" onChange="showUser()">

function showUser()
{

var fromdate = $( "#fromdate" ).val();
var todate= $( "#todate" ).val();

// rest of your code:




}

希望您在php中正确获取post / get参数。

2020-07-26