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

时间:2016-02-22 19:29:21

标签: javascript php json datatable

我正在使用Datatable(DataTables 1.10.10)和Datatable Editor。对于我的服务器端脚本/表(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();
}); 

我是否需要在.... data中进一步定义值:

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;
}

2 个答案:

答案 0 :(得分:2)

不,你不要!

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.minDate&amp; d.maxDate到服务器,尝试通过服务器端的$_POST数组捕获它们,然后在数据库查询(或用于检索数据的任何基础结构)中使用,如:

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

使用这些参数过滤数据。

答案 1 :(得分:0)

你可以看到:

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

而不是:

<input type="text">

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