繁体   English   中英

数据表服务器端脚本的数字和日期范围过滤器

[英]Number and a date range filter for datatable serverside script

我正在使用数据表(DataTables 1.10.10)和数据表编辑器。 对于我的服务器端脚本/表(500000行),我想要一个数字和一个日期范围过滤器。 由于简单的文本过滤器工作正常。 在哪里以及如何修改data.php才能使范围过滤器正常工作? 那是我的设置:

<html>
     <input data-column="2" id="min" name="min" type="number" min="0" max="500000"> 
     <input data-column="2" id="max" name="max" type="number" min="0" max="500000">
</html>

我的脚本:

 var table = $('#my-table').DataTable( {
    dom: "Blfrtip",
    ajax: {
        url: "/data.php",
        type: "POST",
        data: function (d) { 
            d.minDate = $('#min').val(); 
            d.maxDate = $('#max').val(); 
        },
    }
...
});

$('#min, #max').keyup( function() {
    table.ajax.reload();
}); 

我是否需要进一步定义..数据中的值:

function (d) { d.minDate = $('#min').val(); d.maxDate = $('#max').val(); } }, 
...

像……

function( settings, data, dataIndex ) {
    var min = parseInt( $('#min').val(), 10 );
    var max = parseInt( $('#max').val(), 10 );
    var id = parseFloat( data[6] ) || 0; 

    if ( ( isNaN( min ) && isNaN( max ) ) ||
         ( isNaN( min ) && id <= max ) ||
         ( min <= id   && isNaN( max ) ) ||
         ( min <= id   && id <= max ) )
    {
        return true;
    }
    return false;
}

不,你不!

function( settings, data, dataIndex ) {
var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );
var id = parseFloat( data[6] ) || 0; 

if ( ( isNaN( min ) && isNaN( max ) ) ||
     ( isNaN( min ) && id <= max ) ||
     ( min <= id   && isNaN( max ) ) ||
     ( min <= id   && id <= max ) )
{
    return true;
}
return false;
}

仅用于您的数据表实例完全在前端工作时。

现在,您已将d.minDated.maxDate传递给服务器,尝试通过服务器端的$_POST数组捕获它们,然后在您的数据库查询(或用于检索数据的任何基础结构)中使用sth:

 $query = '... WHERE date >= minDate & date <= maxDate ...';

使用这些参数过滤数据。

您可以看到:

<input type="number" min="0" max="500000"> 

代替 :

<input type="text">

因此,在这种情况下,您应该为文本输入添加验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM