YADCF + Datatables 服务器端使用 Php 填充选择

Posted

技术标签:

【中文标题】YADCF + Datatables 服务器端使用 Php 填充选择【英文标题】:YADCF + Datatables Server Side Populate Select with Php 【发布时间】:2017-05-21 07:39:27 【问题描述】:

我确实搜索过每一个提到该论点的页面,但似乎无法弄清楚这一点 我正在使用带有 Yadcf、ajax 源、server_side.php 和 ssp.class.php 的数据表

现在我想用所有数据填充选择过滤器,而不仅仅是当前页面, 我阅读并看到了 yadcf 展示 --> yadcf-showcase.appspot.com/server_side_source.html,唯一提到的是用于填充 yadcf_data_n 的 JQuery (java) 部分

但是找不到一个使用 server_side.php 和 ssp.class.php 来检索数据的示例。

我(以及我在很多其他人周围看到的情况)会非常高兴有一个关于如何存档的盗版示例

我的数据表代码是:

  var oTable2;
  oTable2 = $('#example2').DataTable(
            "responsive": true,
            "processing": true,
            select: true,
            "serverSide":true,
            stateSave: true,
            "ajax": 
               "type" : "GET",
               "url":  "leadsdata.php",
               "data" :  function ( d ) 
                d.var1=var1;
                   

            ,
            "columns": [
                "data":"test",
                "mRender": function ( client_id, type, full )  
                return  '<a href="clickme.php?id='+Base64.encode(client_id)+'"> GO</a>';
                
        ,
                "data": 1
        ,
                "data": 2
        ,
                "data": 3
        ,
                "data": 4               
        ,
                "data": 5
        ,
                "data": 6

  ],
            "language": 
               "infoFiltered": ".",
               "info": "_START_ : _END_ nga _TOTAL_ nominativ"
             

   );

    yadcf.init(oTable2, [
            column_number: 1,
                  filter_type: "text",
                  filter_delay: 200
            , 
            column_number: 2,
                  filter_type: "text",
                  filter_delay: 200
            , 
            column_number: 3
            , 
            column_number: 4,
                filter_type: "text",
                filter_delay: 200   
            , 
            column_number: 5

            , 
            column_number: 6

            ]);

    );

并使用默认的 server_side.php Click here to show

和默认的ssp.class.php Click here to show

欢迎提供如何从此设置中填充 yadcf_data_n# 的任何示例代码

【问题讨论】:

【参考方案1】:

适合对同一主题感兴趣的人

感谢 vedmack (YADCF) 作者的帮助,我找到了完美的解决方案:

修改部分来自:

    echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

到:

$data=SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns, $joinQuery, $extraWhere );

$db = SSP::sql_connect( $sql_details );
$stmt3 = $db->prepare( 'SELECT DISTINCT(value) FROM esito' );
$stmt3->execute();
$data['yadcf_data_3'] = $stmt3->fetchAll(PDO::FETCH_COLUMN, 0);

$stmt5 = $db->prepare( 'SELECT DISTINCT(value2) FROM table' );
$stmt5->execute();
$data['yadcf_data_5'] = $stmt5->fetchAll(PDO::FETCH_COLUMN, 0);

$stmt6 = $db->prepare( 'SELECT DISTINCT(value3) FROM table' );
$stmt6->execute();
$data['yadcf_data_6'] = $stmt6->fetchAll(PDO::FETCH_COLUMN, 0);


echo json_encode($data);

所以我们为我们拥有的每个选择字段进行自定义查询(在我的情况下,我有 3 个) 并重新包含 $db,因为我在不同的文件中有我的 ssp.class.php

希望对你有帮助

【讨论】:

太好了,是@Allan Jardine 给了我那个代码

以上是关于YADCF + Datatables 服务器端使用 Php 填充选择的主要内容,如果未能解决你的问题,请参考以下文章

清除YADCF Select2 /自定义筛选器选项后,SharePoint页面将向上/向下滚动

当搜索没有返回结果时,Select2 过滤器值消失

Datatables + PHP:多表的服务器端处理

将 datatables.net 与服务器端 Blazor 应用程序一起使用

使用 DataTables 插件的服务器端分页

用DataTables实现服务器端分页