尝试根据用户输入使用 ajax 和 php 在两个日期之间加载数据


Trying to Load Data between two dates using ajax and php based on user input

我正在尝试从数据库中获取数据,以便在用户选择两个日期时显示。第一个日期将是"开始日期",第二个日期将是"结束日期" 根据我给出的规范,他们需要查看用户输入的日期之间的数据。当用户搜索该月的特定日期并且数据显示没有问题时,我目前可以正常工作。我遇到的问题是在他们输入要搜索的开始和结束日期时获取要显示的数据。如果有人能看到我的错误或缺少我需要的代码,我将不胜感激。谢谢。

这是我的 HTML 文件

$( "#datepicker , #datepicker2" ).datepicker({ dateFormat: "yy-mm-dd" });
</script>
<html>
<body>
    <div id="Search-Form">
        <div id="search-container">
            <label>
                <span>Search :</span>
                <input type="text" name="search" value="" id="datepicker" class="text-field">
                <span>or Between</span>
                <input type="text" name="search2" value="" id="datepicker2" class="text-field">
            </label>
            <div id="search-submit">
                <input type="button" name="submit" id="sumbit" value="SUBMIT" onclick="loadData()">
            </div>
        </div>  
    </div>
    <div id="queryTable">
    </div>
    <div id="queryTractors">
    </div>
</body>
</html>

这是我的 ajax.php文件

include "../Database/connection.php";
$tractor_Tbl = "Tractor";
$trailer_Tbl = "Trailer";
$data = array();
$TractorData = array();

        if(isset($_REQUEST['search'])) {
            $se = mysql_entities_fix_string($connection, $_REQUEST['search']);
            $se2 = mysql_entities_fix_string($connection, $_REQUEST['search2']);
            $query = "SELECT * FROM Trailer WHERE datewashed BETWEEN  '$se' AND '$se2'";
            $result = $connection->query($query);
            while($info = mysqli_fetch_array($result)) { 
                array_push($data , $info);
            }else{
                echo $connection->error;
            }
        }

error_reporting(E_ALL);
ini_set('display_errors', 1);
echo json_encode ($data);
return;
function mysql_fix_string($connection, $string) {
if(get_magic_quotes_gpc()) $string = stripslashes($string);
return $connection->real_escape_string($string);
}
function mysql_entities_fix_string($connection, $string) {
return htmlentities(mysql_fix_string($connection, $string));
}
?>

这是我目前拥有的负载功能。

function loadData() {
// Search val
var search = $("input#datepicker").val();
var search2 = $("input#datepicker2").val();
var url = encodeURI('/BLT/Services/ajax.php?search=' + search+'&search2=' + search2);
    $.getJSON( url, function( data ) {
        var html = '';
        html += "<table border='1' border-color='black' cellpadding='2px'><thead>";
        html += "<tr height='43' align='center'>";
        html += "<th cellpadding='2px'><b>Trailer Number</b></th>";
        html += "<th cellpadding='2px'><b>Location</b></th>";
        html += "<th cellpadding='2px'><b>Washer</b></th>";
        html += "<th cellpadding='2px'><b>Exterior Wash</b></th>";
        html += "<th cellpadding='2px'><b>Date Washed</b></th>";
        html += '</tr><tbody>';
        var count = 0;
        $.each( data, function( index, row ) {
            html += '<tr>';
            html += "<td cellpadding='2px'>" + row.Trailer_Num + "</td>";
            html += "<td cellpadding='2px'>" + row.Location + "</td>";
            html += "<td cellpadding='2px'>" + row.washer + "</td>";
            html += "<td cellpadding='2px'>" + row.exWash + "</td>";
            html += "<td cellpadding='2px'>" + row.datewashed + "</td>";
            html += '</tr>';
            count++;
        });
        if (count == 0) {
            html += '<tr><td colspan="5">No results were found from your query.</td></tr>';
        }
        html += '</tbody></table>';
        $("div#queryTable").html(html);
    });
}

函数 loadData() 只发送 datePicker 的值,而不是 'datePicker2' 的值。我认为这可能是问题所在。我不知道PHP。你能验证一下在PHP端,你收到了两个日期吗?如果没有,那么我认为您应该将 JSON URL 重新排列如下

encodeURI('/BLT/Services/ajax.php?search=' + search+'&search2=' + search2);

其中搜索 2 是

 var search = $("input#datepicker2").val();

顺便说一句,命名变量不是很好。您可以将"日期选择器"和"日期选择器2"分别命名为"开始日期"和"结束日期"

为什么不使用BETWEEN

$query = "SELECT * FROM Trailer WHERE datewashed >= '$se' AND datewashed <= '$se2'";

改变它

$query = "SELECT * FROM Trailer WHERE datewashed BETWEEN  '$se' AND '$se2'";

你能告诉我们你在回复中得到了什么吗?您可以按如下方式进行调试吗?

  1. 在PHP上,你收到两个日期了吗?
  2. 查询是否my_sql返回日期之间的正确结果集
  3. 在JSP上,你得到的响应是什么?