来自数组的数据表数据

Datatable data from array?

本文关键字:数据表 数据 数组      更新时间:2023-09-26

我目前有一个工作的数据表,可以直接从我的表中获取数据。问题是,现在我想使用来自多个表的数据填充另一个数据表。我已经有一个工作 sql 查询,可以返回我想要的数据。我想做的是将我想要的列的每个数据放在不同的数组中,然后将它们放入数据表中。

$data = $this->log_send_model->getListDetailled($conditions,array('from'=>$this->uri->segment(4)),array('orderBy'=>array('id_log_send'=>'desc')));
$arrayMess = array();
   // Other array for columns
   foreach ($data as $value) {
      # code...
      array_push($arrayMess, $value->message);
      //var_dump($arrayMess);
}

在这里,我希望一列是所有$value>消息数据。我正在考虑为每一列执行此操作,然后将其放入数据表中。

这是数据表代码:

$(document).ready(function () {
$("#datatable").dataTable({
   processing: true,
    serverSide: true,
    ajax: {
        "url": "<?php echo base_url()."DatatableControl/dataTable"; ?>",
        "type": "POST"
    },
    columns: [
     { data: "id_log_send" },
     { data: "date" },
     { data: "recipient" },
     { data: "message" },
     { data: "etat" }
    ]
   })
});

如您所见,对于每一列,我都将其链接到数据库中表的一列。我想在这些数据选项中放置一个数组。像这样:

{ data: "$arrayMess" }

但它不起作用。

如何从查询中获取数据,并将其放入数据表中?

数据表以 json 的形式获取数据,因此只需json_encode数组即可完成任务

我认为您正在遵循MVC架构,那么您使用ajax从视图中调用的函数应该返回json格式输出。

在控制器处,

public function datatable(){
        $data = $this->log_send_model->getListDetailled($conditions,array('from'=>$this->uri->segment(4)),array('orderBy'=>array('id_log_send'=>'desc')));
        $arrayMess = array();
           // Other array for columns
           foreach ($data as $value) {
              # code...
              array_push($arrayMess, $value->message);
              //var_dump($arrayMess);
        }
      echo json_encode($arrayMess);
}

在查看数据表部分添加此代码,

    <table id="datatable">
      <thead>
         <tr>
           <th>id_log_send</th>
            <th>Date</th>
            <th>Recipient</th>
            <th>Message</th>
            <th>Etat</th>
         </tr>
    </thead>
    </table>
     <script>  
       $(document).ready(function () {
       if ( ! $.fn.dataTable.isDataTable( '#datatable' ) ) {
              var table = $("#datatable").DataTable();
            }
        $.ajax({
           "url": "<?php echo base_url()."DatatableControl/dataTable"; ?>",
            "type": "POST",
            success:function(data){
           $.each(data,function(i,item){
                        $('#datatable').dataTable().fnAddData( [
                            "<tr><td>"+item.id_log_send+"</td>",
                            "<td>"+item.date+"</td>",
                            "<td>"+item.recipient+"</td>",
                            "<td>"+item.message+"</td>",
                             "<td>"+item.etat+"</td></tr>"] );
                    });
           },error:function(error){ console.log(error);}
        });
});
</script>

我希望这对你有帮助