微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery插件“ Datatables”中基于Ajax的范围搜索

如何解决jQuery插件“ Datatables”中基于Ajax的范围搜索

我正在使用基于jquery的表格插件datatables”,并且试图在两个数字(“开始日期” “结束日期” )。这些输入的值应用于MysqL列“ order_id”中的查询

在服务器端脚本( fetch.PHP )上,我捕获了这两个值。

if(isset($_POST['start_date'],$_POST['end_date'])) {
         $query .= 'order_id BETWEEN "'.$_POST["start_date"].'" AND "'.$_POST["end_date"].'" AND ';
 }

问题是我在控制台中看不到任何错误,但是在使用数字范围搜索之后,没有显示结果。

“类别选择菜单”(类别和类别2)按预期方式工作。

我已经设置了一个测试站点,也许您可​​以帮助我找到错误Testsite

这是我的脚本

$(document).ready(function () {
    var category = "";
    var category2 = "";
    var start_date = "";
    var end_date = "";

    load_data();

    function load_data(is_category,is_category2,start_date,end_date) {
        console.log(is_category,end_date);
        var dataTable = $('#product_data').DataTable({
            "processing": true,"serverSide": true,"order": [],"ajax": {
                url: "fetch.PHP",type: "POST",data: {
                    is_category: is_category,is_category2: is_category2,start_date: start_date,end_date: end_date
                },}
        });
    }

    // Number Range Search

    $('#search').click(function () {
        console.log($(this).attr('id'),end_date)
        var start_date = $('#start_date').val();
        var end_date = $('#end_date').val();
        if (start_date != '' && end_date != '') {
            $('#product_data').DataTable().destroy();
            load_data('','',end_date);
        }
        else {
            alert("Both Date is required");
        }
    });

    // Select Menu id="category"

    $(document).on('change','#category,#category2',function () {
        //console.log($(this).attr('id'),category,category2)
        if ($(this).attr('id') === "category") {
            category = $(this).val();
        } else if ($(this).attr('id') === "category2") {
            category2 = $(this).val();
        }
        // 
        $('#product_data').DataTable().destroy();
        if (category != '') {
            load_data(category,category2);
        }
        else {
            load_data();
        }
    });

    // Select Menu id="category2"

    $(document).on('change','#category2',function () {
        var category2 = $(this).val();
        $('#product_data').DataTable().destroy();
        if (category2 != '') {
            load_data(category,category2);
        }
        else {
            load_data();
        }
    });

});

fetch.PHP

//fetch.PHP
$connect = MysqLi_connect("localhost","xxxxx","xxxxx");
$columns = array('order_id','order_customer_name','order_item','order_value','order_date');

$query = "SELECT * FROM tbl_order WHERE ";

if(isset($_POST['start_date'],$_POST['end_date']))
{
 $query .= 'order_id BETWEEN "'.$_POST["start_date"].'" AND "'.$_POST["end_date"].'" AND ';
}


if(isset($_POST["is_category"]))
{
 $query .= "order_item = '".$_POST["is_category"]."' OR ";
}

if(isset($_POST["is_category2"]))
{
 $query .= "order_customer_name = '".$_POST["is_category2"]."' AND ";
}

if(isset($_POST["search"]["value"]))
{
 $query .= '
  (order_id LIKE "%'.$_POST["search"]["value"].'%" 
  OR order_customer_name LIKE "%'.$_POST["search"]["value"].'%" 
  OR order_item LIKE "%'.$_POST["search"]["value"].'%" 
  OR order_value LIKE "%'.$_POST["search"]["value"].'%")
 ';
}

if(isset($_POST["order"]))
{
 $query .= 'ORDER BY '.$columns[$_POST['order']['0']['column']].' '.$_POST['order']['0']['dir'].' 
 ';
}
else
{
 $query .= 'ORDER BY order_id DESC ';
}

$query1 = '';

if($_POST["length"] != -1)
{
 $query1 = 'LIMIT ' . $_POST['start'] . ',' . $_POST['length'];
}

$number_filter_row = MysqLi_num_rows(MysqLi_query($connect,$query));

$result = MysqLi_query($connect,$query . $query1);

$data = array();

while($row = MysqLi_fetch_array($result))
{
 $sub_array = array();
 $sub_array[] = $row["order_id"];
 $sub_array[] = $row["order_customer_name"];
 $sub_array[] = $row["order_item"];
 $sub_array[] = $row["order_value"];
 $sub_array[] = $row["order_date"];
 $data[] = $sub_array;
}

function get_all_data($connect)
{
 $query = "SELECT * FROM tbl_order";
 $result = MysqLi_query($connect,$query);
 return MysqLi_num_rows($result);
}

$output = array(
 "draw"    => intval($_POST["draw"]),"recordsTotal"  =>  get_all_data($connect),"recordsFiltered" => $number_filter_row,"data"    => $data
);

echo json_encode($output);

解决方法

那是因为is_category和is_category2返回0。您的php上可能有一个if语句,例如if $ _POST [is_category],但是在没有选择类别的情况下也需要这样做。请分享完整的php来帮助您

在您的点击函数上替换load_data(start_date,end_date);带有load_data('','',开始日期,结束日期);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。