我被赋予了使用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>";
问题是当我同时选择两个日期时什么也没发生.
在这种情况下,请帮我.
简单的例子将不胜感激.
谢谢.
解决方法:
将您的html更改为:您拥有showUser()而不是showuser(),因此请更改输入onchage =“ showUser()”.
将onchange事件写入两个input.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参数.