我被赋予了使用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()".
showUser()
showuser()
onchage="showUser()".
写onchange事件,无论在这两个领域,他们将触发inputs.so。如果您仅从前端发送日期,并且在数据库中的date列的类型为datetime,则在sql中使用date(date)。
onchange
"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参数。