Как создать отчет между двумя датами, используя 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>";

Проблема в том, что когда я выбираю дату, то ничего не происходит.
Пожалуйста, помогите мне в этой ситуации.
простые примеры будут с благодарностью.
Благодарю.

2

Решение

измените свой HTML на это: у вас есть showUser() не showuser() так что измените вход onchage="showUser()".

записывать onchange событие обоим input.so в обоих полях, которые они сработают. и в вашем sql используйте дату (date), если вы отправляете только дату из внешнего интерфейса, а столбец даты в базе данных имеет тип datetime.

"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:}

Надеюсь, что вы получаете post / get параметры правильно в php.

1

Другие решения

I have Created Whole Tutorial for Date Wise Report, so once try it

Структура таблицы

CREATE TABLE IF NOT EXISTS `bookings` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`start` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`phone` varchar(20) NOT NULL,
`comments` longtext NOT NULL,
`approved` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `bookings` (`id`, `date`, `start`, `name`, `email`, `phone`, `comments`, `approved`) VALUES
(1, '2014-12-17', 'yes', 'Mahendra', 'mahendra@XXXX', '89XXXXXXXX', 'nothing', 'yes'),
(2, '2014-12-18', 'no', 'Rahul', 'rahul@XXXXXX', '987XXXXXXX', 'very nice article', 'yes');

my_test.php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#generate_report").click(function(){
var from_date=jQuery("#fromdate").val();
var to_date=jQuery("#todate").val();
var data =
{
from_date	 : from_date,
to_date		 : to_date
}
jQuery.ajax({
type: "POST",
url: "test.php",
data: data,
success: function(responce){
$("#txtHint").after(responce);
}
});
});
});
</script>
From date: <input type="text" id="fromdate" value="2014-12-17">   To date: <input type="text" id="todate" value="2014-12-18">
<input type="button" name="generate_report" id="generate_report" value="Generate Report" />
<br>
<div id="txtHint"><b>User informations will be listed here.</b></div>

test.php (файл вызова ajax)

<?php
error_reporting(0);
include_once("wp-config.php");
extract($_POST);
$sql1=mysql_query("Select * from bookings where date between '".$from_date."' AND '".$to_date."'");
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($sql1))
{
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>";
?>

Это демо отлично работает, и только сейчас я создал, так что однажды проверьте его …

введите описание изображения здесь
введите описание изображения здесь

Прошу кого угодно получить интерес, чем прошу исправить ответ и отдать голос за это решение ..
Спасибо

2

Проверьте, является ли дата, переданная средством выбора даты с использованием AJAX, в правильном формате, подходящем для вашего запроса?

Попробуйте отобразить эти две переменные, переданные HTML-датчиком на вашей странице PHP:

echo $ _GET [«fromdate»];
echo $ _GET [«todate»];

Это даст вам подсказку о любой проблеме, если таковая имеется.

0
По вопросам рекламы [email protected]