Php Codeigniter和Datatable搜索筛选器列问题

Php Codeigniter和Datatable搜索筛选器列问题,php,datatables,Php,Datatables,你好,我有点小问题, 接下来,我使用codeigniter创建了一个datatable,接下来我尝试使用实现一个搜索列 我的看法是: <div id="page-wrapper"> <div class="card"> <div class="card-header corsi"> <h3 class="page-header"><i class="fas fa-graduation-cap"&

你好,我有点小问题, 接下来,我使用codeigniter创建了一个datatable,接下来我尝试使用实现一个搜索列

我的看法是:

<div id="page-wrapper">
    <div class="card">
        <div class="card-header corsi">
            <h3 class="page-header"><i class="fas fa-graduation-cap"></i> <?=$title?></h3>
        </div>
        <div class="card-body">
            <div class="row">
                <div class="col-xl-12">
                </div>
            </div>
            <div class="row">
                <div class="col-lg-12"> 
                    <table class="table table-striped table-bordered table-hover" id="scadenze_data" style="width:100%">
                        <thead>  
                            <tr>  
                                <th width="7%">Cod. Corso</th>
                                <th width="9%">Nome</th>  
                                <th width="10%">Cognome</th>
                                <th width="7%">Codice Fiscale</th>
                                <th width="7%">Azienda</th>
                                <th width="1%">Edizione</th>
                                <th width="1%">
                                    <select name="profilo" id="profilo" class="form-control">
                                        <option value="">Profilo Search</option>
                                        <?php 
                                            foreach($profili as $prof) {
                                                echo '<option value="'.$prof->CODICE.'">'.$prof->CODICE.'</option>';
                                            }
                                        ?>
                                    </select>                      
                                </th>
                                <th width="9%">Periodo dal</th>
                                <th width="9%">Periodo al</th>  
                                <th width="9%">N. Attestato</th> 
                                <th width="9%">Data attestato</th> 
                                <th width="9%">Scadenza</th>
                                <th width="9%">Attestati</th>  
                            </tr>  
                        </thead>
                    </table>  
                </div>  
            </div> 
        </div>
        <div class="card-footer">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-md-6">
                        <input class="btn btn-secondary" src="" value="<- Torna indietro">
                    </div>
                </div>  
            </div>
        </div>
    </div>              
</div>
<script type="text/javascript" language="javascript" > 
    $(document).ready(function(){  
        load_data();

        function load_data(is_profilo) {
            var dataTable = $('#scadenze_data').DataTable({ 
                "searchable": true,
                "Paginate": true, 
                "processing":true,  
                "serverSide":true,  
                "order":[],  
                "ajax":{  
                    url:"<?php echo base_url().'corsi/fetch_scadenze'; ?>",  
                    type:"POST",
                    data:{is_profilo:is_profilo}
                },  
                "columnDefs":[  
                    {  
                        "targets":[12],  
                        "orderable":false,  
                    },
                    {  
                        "targets":[6],  
                        "orderable":false,  
                    },
                ],
                "deferRender": true,
                "lengthMenu":[[10,25,50,100,-1],[10,25,50,100,"All"]],
                "pageLength":10,
                "pagingType": "full_numbers",
            }); 
        }

        $(document).on('change', '#profilo', function(){
            var profilo = $(this).val();
            $('#scadenze_data').DataTable().destroy();
            if(profilo != '') {
                load_data(profilo);
            } else {
                load_data();
            }
        });
    }); 
</script> 

鳕鱼。科索
诺姆
同源的
鳕鱼鱼鳞
阿齐恩达
埃迪锡安
Profilo搜索
周期性
周期铝
证明
数据证明
斯加登扎
证明
$(文档).ready(函数(){
加载_数据();
功能加载\数据(is\ U profilo){
var dataTable=$('scadenze_data')。dataTable({
“可搜索”:正确,
“Paginate”:正确,
“处理”:对,
“服务器端”:正确,
“订单”:[],
“ajax”:{
url:“”,
类型:“POST”,
数据:{is_profilo:is_profilo}
},  
“columnDefs”:[
{  
“目标”:[12],
“可订购”:错误,
},
{  
“目标”:[6],
“可订购”:错误,
},
],
“延迟渲染”:正确,
“长度菜单”:[[10,25,50100,-1],[10,25,50100,“全部”],
“页面长度”:10,
“pagingType”:“完整编号”,
}); 
}
$(文档).on('change','profilo',function(){
var profilo=$(this.val();
$('scadenze_data').DataTable().destroy();
如果(profilo!=''){
加载数据(profilo);
}否则{
加载_数据();
}
});
}); 
我的控制器:

function fetch_scadenze(){ 
    $this->load->helper('form');
    $this->load->model("scadenze_model");
    $fetch_data = $this->scadenze_model->make_datatables();  
    $data = array();  
    foreach($fetch_data as $row) {  
        $dal = date("d/m/Y", strtotime($row->PERIODO_DAL));
        $al = date("d/m/Y", strtotime($row->PERIODO_AL));
        $att = date("d/m/Y", strtotime($row->DATA_ATTESTATO));
        $scadenza = date("d/m/Y", strtotime($row->DATA_SCADENZA));
        $sub_array = array(); 
        $sub_array[] = $row->CORSOCODICE;
        $sub_array[] = $row->NOME;  
        $sub_array[] = $row->COGNOME;
        $sub_array[] = $row->CF;
        $sub_array[] = $row->DENOMIN_RAG_SOC;
        $sub_array[] = $row->EDIZIONE;
        $sub_array[] = $row->CODICE;
        $sub_array[] = $dal;
        $sub_array[] = $al;
        $sub_array[] = $row->N_ATTESTATO_PROGRESSIVO;
        $sub_array[] = $att;
        $sub_array[] = $scadenza;
        $sub_array[] = "<div class='btn-group' role='group' aria-label='Button group with nested dropdown'>...</div>";  
        $data[] = $sub_array;  
    }  
    $output = array(  
        "draw" => intval($_POST["draw"]),  
        "recordsTotal" => $this->scadenze_model->get_all_data(),  
        "recordsFiltered" => $this->scadenze_model->get_filtered_data(), 
        "data" => $data
    );
    echo json_encode($output);
}
函数fetch_scadenze(){
$this->load->helper('form');
$this->load->model(“scadenze_model”);
$fetch_data=$this->scadenze_model->make_datatables();
$data=array();
foreach($fetch_data as$row){
$dal=日期(“d/m/Y”,标准时间($row->PERIODO_dal));
$al=日期(“日/月/年”,标准时间($row->PERIODO_al));
$att=date(“d/m/Y”,strotime($row->DATA_-atto));
$scadenza=日期(“d/m/Y”,标准时间($row->DATA_scadenza));
$sub_array=array();
$sub_array[]=$row->CORSOCODICE;
$sub_数组[]=$row->NOME;
$sub_array[]=$row->COGNOME;
$sub_array[]=$row->CF;
$sub_array[]=$row->DENOMIN_RAG_SOC;
$sub_array[]=$row->EDIZIONE;
$sub_数组[]=$row->CODICE;
$sub_数组[]=$dal;
$sub_数组[]=$al;
$sub_array[]=$row->N_certivato\u PROGRESSIVO;
$sub_数组[]=$att;
$sub_array[]=$scadenza;
$sub_数组[]=“…”;
$data[]=$sub_数组;
}  
$output=数组(
“draw”=>intval($\u POST[“draw”]),
“recordsTotal”=>this->scadenze_model->get_all_data(),
“recordsFiltered”=>this->scadenze\u model->get\u filtered\u data(),
“数据”=>$data
);
echo json_编码($output);
}
我的情态:

if (!defined('BASEPATH')) {exit('No direct script access allowed');}

class Scadenze_model extends CI_Model  
{  
    var $table = "corso co";  
    var $select_column = array("cu._ID","ut.NOME","ut.COGNOME","ut.CF","az.DENOMIN_RAG_SOC","co.EDIZIONE","pr.CODICE","co.CORSOCODICE","co.PERIODO_DAL","co.PERIODO_AL","cu.N_ATTESTATO_PROGRESSIVO","co.DATA_ATTESTATO","co.DATA_SCADENZA","cu.FILE");
    var $order_column = array("co.CORSOCODICE","ut.NOME","ut.COGNOME","ut.CF","az.DENOMIN_RAG_SOC","co.EDIZIONE","pr.CODICE","co.PERIODO_DAL","co.PERIODO_AL","cu.N_ATTESTATO_PROGRESSIVO","co.DATA_ATTESTATO","co.DATA_SCADENZA", null);

    function make_query()  
    {  
        $this->db->select($this->select_column);  
        $this->db
            ->from($this->table)
            ->join("corsi_utenti cu", "co._ID = cu.ID_CORSO", "left")
            ->join("azienda az", "cu.ID_AZIENDA = az._ID", "left")
            ->join("utente ut", "cu.ID_UTENTE = ut._ID", "left")
            ->join("profilo pr", "co.ID_PROFILO = pr._ID", "left");

        if(isset($_POST["is_profilo"])) 
        {
            //echo "<script type='text/javascript'>console.log('prova');</script>";
            $this->db->or_like("pr.CODICE", $_POST["is_profilo"]);
            //$this->db->or_like("pr.CODICE", $_POST["is_profilo"]["value"]);
            //$query .= "product.category = '".$_POST["is_category"]."' AND ";
        }
        if(isset($_POST["search"]["value"]))  
        {   //echo "<script>alert('There are no fields to generate a report');</script>";
            $this->db->like("co.CORSOCODICE", $_POST["search"]["value"]);
            $this->db->or_like("ut.NOME", $_POST["search"]["value"]);
            $this->db->or_like("ut.COGNOME", $_POST["search"]["value"]);
            $this->db->or_like("ut.CF", $_POST["search"]["value"]);
            $this->db->or_like("az.DENOMIN_RAG_SOC", $_POST["search"]["value"]);
            $this->db->or_like("co.EDIZIONE", $_POST["search"]["value"]);
            $this->db->or_like("pr.CODICE", $_POST["search"]["value"]);
            $this->db->or_like("co.PERIODO_DAL", $_POST["search"]["value"]);
            $this->db->or_like("co.PERIODO_AL", $_POST["search"]["value"]);
            $this->db->or_like("cu.N_ATTESTATO_PROGRESSIVO", $_POST["search"]["value"]);
            $this->db->or_like("co.DATA_ATTESTATO", $_POST["search"]["value"]);
            $this->db->or_like("co.DATA_SCADENZA", $_POST["search"]["value"]);
        } 
        if(isset($_POST["order"]))  
        {  
            $this->db->order_by($this->order_column[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);  
        } else {  
            $this->db->order_by('co.DATA_ATTESTATO', 'DESC');
        }  
    }  
    function make_datatables()
    {
        $this->make_query();

        // $this->db->limit(10,1);
        if($_POST['length'] != -1)  
        {  
            $this->db->limit($_POST['length'], $_POST['start']);  
        }
        $query = $this->db->get();  
        return $query->result();  
    }  
    function get_filtered_data(){  
        $this->make_query();  
        $query = $this->db->get();  
        return $query->num_rows();  
    }       
    function get_all_data()  
    {  
        $this->db->select("*");  
        $this->db->from($this->table);  
        return $this->db->count_all_results();  
    }


    function insert_log($activity, $module){
        $id = $this->session->userdata('user_id');

        $data = array(
            'fk_user_id' => $id,
            'activity'   => $activity,
            'module'     => $module,
            'created_at' => date('Y\-m\-d\ H:i:s A')
        );
        $this->db->insert('activity_log', $data);
    }

    //FACCIO UPDATE DELLA TABELLA corsi_utenti in FILE        
    function set_url_attestato($id, $file){
        $this->db->set('FILE', $file);
        $this->db->where('_ID', $id);
        $this->db->update('corsi_utenti');        
    }
}
if(!defined('BASEPATH'){exit('No direct script access allowed');}
类Scadenze_模型扩展了CI_模型
{  
var$table=“科索公司”;
var$select_column=array(“cu._ID”、“ut.NOME”、“ut.COGNOME”、“ut.CF”、“az.DENOMIN_RAG_SOC”、“co.EDIZIONE”、“pr.CODICE”、“co.CORSOCODICE”、“co.PERIODO_DAL”、“co.PERIODO_AL”、“cu.N_detectato_PROGRESSIVO”、“co.DATA_detectato”、“co.DATA_SCADENZA”、“cu.FILE”);
var$order\u column=array(“co.CORSOCODICE”、“ut.NOME”、“ut.COGNOME”、“ut.CF”、“az.DENOMIN\u RAG\u SOC”、“co.EDIZIONE”、“pr.CODICE”、“co.PERIODO\u DAL”、“co.PERIODO\u AL”、“cu.N\u authenticato\u PROGRESSIVO”、“co.DATA\u authenticato”、“co.DATA\u SCADENZA”、null);
函数make_query()
{  
$this->db->select($this->select\u列);
$this->db
->从($this->table)
->加入(“corsi_utenti cu”,“co.\u ID=cu.ID\u CORSO”,“左”)
->加入(“azienda-az”,“cu.ID\u azienda=az.\u-ID”,“左”)
->加入(“utente ut”,“cu.ID\U utente=ut.\U ID”,“左”)
->加入(“profilo-pr”,“co.ID_-profilo=pr._-ID”,“left”);
如果(isset($_POST[“is_profilo”]))
{
//echo“console.log('prova');”;
$this->db->or_like(“pr.CODICE”,$_POST[“is_profilo”]);
//$this->db->or_like(“pr.CODICE”、$u POST[“is_profilo”][“value”]);
//$query.=“product.category=”。$\u POST[“是”]。“”和“;
}
如果(isset($_POST[“search”][“value”]))
{//echo“警报('没有可生成报告的字段');”;
$this->db->like(“co.CORSOCODICE”,$_POST[“search”][“value”]);
$this->db->或类似的($ut.NOME),$u POST[“search”][“value”]);
$this->db->or_like(“ut.COGNOME”,$_POST[“search”][“value”]);
$this->db->or_like(“ut.CF”,$_POST[“search”][“value”]);
$this->db->或类似(“a
    $('#profilo').on('change', function(){
        var profilo = $(this).val();
        $('#scadenze_data').DataTable().destroy();
        if(profilo != '') {
            load_data(profilo);
        } else {
            load_data();
        }
    });
<script type="text/javascript" language="javascript" > 
$(document).ready(function(){  
    load_data();

    function load_data(is_profilo) {
        var dataTable = $('#scadenze_data').DataTable({ 
            "searchable": true,
            "Paginate": true, 
            "processing":true,  
            //"serverSide":true,  <--serverside block all
            "order":[],  
            "ajax":{  
                url:"<?php echo base_url().'corsi/fetch_scadenze'; ?>",  
                type:"POST",
                data:{is_profilo:is_profilo}
            },  
            "columnDefs":[  
                {  
                    "targets":[12],  
                    "orderable":false,  
                },
                {  
                    "targets":[6],  
                    "orderable":false,  
                },
            ],
            "deferRender": true,
            "lengthMenu":[[10,25,50,100,-1],[10,25,50,100,"All"]],
            "pageLength":10,
            "pagingType": "full_numbers",
        }); 
    }

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