Php 如何使用codeigniter 3从表中删除表过滤器搜索-ajax
所以我尝试了这个教程: 我的数据显示如下: 我只想显示表格,并使用图片中绿色标志上的搜索功能。但是,当我学习教程时,会显示一些特性(例如:图片中的红色和蓝色符号) 我可以在哪里更改以删除图片中的红色功能,并将图片中的蓝色标志功能移动到绿色标志 我还在学习ajax的工作原理。对不起,我的解释太复杂了。但是,我希望你能理解。。。希望你能帮助我 这是我在模型中使用的函数-detkelModel.php:Php 如何使用codeigniter 3从表中删除表过滤器搜索-ajax,php,jquery,ajax,codeigniter,tablefilter,Php,Jquery,Ajax,Codeigniter,Tablefilter,所以我尝试了这个教程: 我的数据显示如下: 我只想显示表格,并使用图片中绿色标志上的搜索功能。但是,当我学习教程时,会显示一些特性(例如:图片中的红色和蓝色符号) 我可以在哪里更改以删除图片中的红色功能,并将图片中的蓝色标志功能移动到绿色标志 我还在学习ajax的工作原理。对不起,我的解释太复杂了。但是,我希望你能理解。。。希望你能帮助我 这是我在模型中使用的函数-detkelModel.php: var $table = 'detail_keluarga'; var $column_o
var $table = 'detail_keluarga';
var $column_order = array('nama', 'hubungan', 'personilid', 'lahir', null); //set column field database for datatable orderable
var $column_search = array('nama', 'hubungan', 'personilid', 'lahir'); //set column field database for datatable searchable just nama, hubungan, personilid, lahir are searchable
var $order = array('id' => 'desc'); // default order
private function _get_datatables_query()
{
$this->db->from($this->table);
$i = 0;
foreach ($this->column_search as $item) // loop column
{
if ($_POST['search']['value']) // if datatable send POST for search
{
if ($i === 0) // first loop
{
$this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
$this->db->like($item, $_POST['search']['value']);
} else {
$this->db->or_like($item, $_POST['search']['value']);
}
if (count($this->column_search) - 1 == $i) //last loop
$this->db->group_end(); //close bracket
}
$i++;
}
if (isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
} else if (isset($this->order)) {
$order = $this->order;
$this->db->order_by(key($order), $order[key($order)]);
}
}
function get_datatables()
{
$this->_get_datatables_query();
if ($_POST['length'] != -1)
$this->db->limit($_POST['length'], $_POST['start']);
$query = $this->db->get();
return $query->result();
}
function count_filtered()
{
$this->_get_datatables_query();
$query = $this->db->get();
return $query->num_rows();
}
public function count_all()
{
$this->db->from($this->table);
return $this->db->count_all_results();
}
<div class="navbar navbar-expand navbar-white navbar-light">
<!--left navbar / Data Keluarga label-->
<div class="col-sm-6 float-left">
<h5>Data Keluarga Personil</h5>
</div>
<!-- Right navbar links -->
<ul class="navbar-nav ml-auto">
<!-- Navbar Search, filter, plus data -->
<li class="nav-item">
<div class="form-inline">
<div class="input-group" data-widget="search-bar">
</div>
</div>
</li>
<!-- Filter Dropdown Menu -->
<li>
</li>
<!-- Plus data dropdown menu -->
<li>
<a class="btn btn-default" data-toggle="dropdown" href="#">
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
</div>
</li>
</ul>
</div>
<div class="card">
<div class="table-responsive p-0">
<table id="table" class="table table-hover text-nowraps">
<thead>
<tr>
<th>Nama</th>
<th>id personil</th>
<th>Hubungan</th>
<th>Tanggal Lahir</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
public function ajax_list()
{
$list = $this->dk->get_datatables();
$data = array();
//$no = $_POST['start'];
foreach ($list as $dk) {
//$no++;
$row = array();
$row[] = $dk->nama;
$row[] = $dk->hubungan;
$row[] = $dk->personilid;
$row[] = $dk->lahir;
//add html for action
$row[] = '<a class="btn btn-sm btn-primary" href="javascript:void(0)" title="Edit" onclick="edit_person(' . "'" . $dk->id . "'" . ')"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
<a class="btn btn-sm btn-danger" href="javascript:void(0)" title="Hapus" onclick="delete_person(' . "'" . $dk->id . "'" . ')"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->dk->count_all(),
"recordsFiltered" => $this->dk->count_filtered(),
"data" => $data,
);
//output to json format
echo json_encode($output);
}
这是我对表和搜索栏的视图-detkel.php:
var $table = 'detail_keluarga';
var $column_order = array('nama', 'hubungan', 'personilid', 'lahir', null); //set column field database for datatable orderable
var $column_search = array('nama', 'hubungan', 'personilid', 'lahir'); //set column field database for datatable searchable just nama, hubungan, personilid, lahir are searchable
var $order = array('id' => 'desc'); // default order
private function _get_datatables_query()
{
$this->db->from($this->table);
$i = 0;
foreach ($this->column_search as $item) // loop column
{
if ($_POST['search']['value']) // if datatable send POST for search
{
if ($i === 0) // first loop
{
$this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
$this->db->like($item, $_POST['search']['value']);
} else {
$this->db->or_like($item, $_POST['search']['value']);
}
if (count($this->column_search) - 1 == $i) //last loop
$this->db->group_end(); //close bracket
}
$i++;
}
if (isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
} else if (isset($this->order)) {
$order = $this->order;
$this->db->order_by(key($order), $order[key($order)]);
}
}
function get_datatables()
{
$this->_get_datatables_query();
if ($_POST['length'] != -1)
$this->db->limit($_POST['length'], $_POST['start']);
$query = $this->db->get();
return $query->result();
}
function count_filtered()
{
$this->_get_datatables_query();
$query = $this->db->get();
return $query->num_rows();
}
public function count_all()
{
$this->db->from($this->table);
return $this->db->count_all_results();
}
<div class="navbar navbar-expand navbar-white navbar-light">
<!--left navbar / Data Keluarga label-->
<div class="col-sm-6 float-left">
<h5>Data Keluarga Personil</h5>
</div>
<!-- Right navbar links -->
<ul class="navbar-nav ml-auto">
<!-- Navbar Search, filter, plus data -->
<li class="nav-item">
<div class="form-inline">
<div class="input-group" data-widget="search-bar">
</div>
</div>
</li>
<!-- Filter Dropdown Menu -->
<li>
</li>
<!-- Plus data dropdown menu -->
<li>
<a class="btn btn-default" data-toggle="dropdown" href="#">
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
</div>
</li>
</ul>
</div>
<div class="card">
<div class="table-responsive p-0">
<table id="table" class="table table-hover text-nowraps">
<thead>
<tr>
<th>Nama</th>
<th>id personil</th>
<th>Hubungan</th>
<th>Tanggal Lahir</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
public function ajax_list()
{
$list = $this->dk->get_datatables();
$data = array();
//$no = $_POST['start'];
foreach ($list as $dk) {
//$no++;
$row = array();
$row[] = $dk->nama;
$row[] = $dk->hubungan;
$row[] = $dk->personilid;
$row[] = $dk->lahir;
//add html for action
$row[] = '<a class="btn btn-sm btn-primary" href="javascript:void(0)" title="Edit" onclick="edit_person(' . "'" . $dk->id . "'" . ')"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
<a class="btn btn-sm btn-danger" href="javascript:void(0)" title="Hapus" onclick="delete_person(' . "'" . $dk->id . "'" . ')"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->dk->count_all(),
"recordsFiltered" => $this->dk->count_filtered(),
"data" => $data,
);
//output to json format
echo json_encode($output);
}
个人资料
-
-
-
纳米
身份证
湖边安
唐加拉希尔
阿克西
在我看来,这就是脚本
<script type="text/javascript">
var save_method; //for save method string
var table;
$(document).ready(function() {
//datatables
table = $('#table').DataTable({
"processing": true, //Feature control the processing indicator.
"serverSide": true, //Feature control DataTables' server-side processing mode.
"order": [], //Initial no order.
// Load data for the table's content from an Ajax source
"ajax": {
"url": "<?php echo site_url('DetkelController/ajax_list') ?>",
"type": "POST"
},
//Set column definition initialisation properties.
"columnDefs": [{
"targets": [-1], //last column
"orderable": false, //set not orderable
}, ],
});
});
</script>
var-save_方法//用于保存方法字符串
var表;
$(文档).ready(函数(){
//数据表
table=$(“#table”).DataTable({
“处理”:true,//特性控制处理指示器。
“服务器端”:true,//功能控制数据表的服务器端处理模式。
“订单”:[],//初始无订单。
//从Ajax源加载表内容的数据
“ajax”:{
“url”:“,
“类型”:“职位”
},
//设置列定义初始化属性。
“columnDefs”:[{
“目标”:[-1],//最后一列
“可订购”:false,//设置为不可订购
}, ],
});
});
这是我的控制器DetkelController.php中的ajax_list():
var $table = 'detail_keluarga';
var $column_order = array('nama', 'hubungan', 'personilid', 'lahir', null); //set column field database for datatable orderable
var $column_search = array('nama', 'hubungan', 'personilid', 'lahir'); //set column field database for datatable searchable just nama, hubungan, personilid, lahir are searchable
var $order = array('id' => 'desc'); // default order
private function _get_datatables_query()
{
$this->db->from($this->table);
$i = 0;
foreach ($this->column_search as $item) // loop column
{
if ($_POST['search']['value']) // if datatable send POST for search
{
if ($i === 0) // first loop
{
$this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
$this->db->like($item, $_POST['search']['value']);
} else {
$this->db->or_like($item, $_POST['search']['value']);
}
if (count($this->column_search) - 1 == $i) //last loop
$this->db->group_end(); //close bracket
}
$i++;
}
if (isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
} else if (isset($this->order)) {
$order = $this->order;
$this->db->order_by(key($order), $order[key($order)]);
}
}
function get_datatables()
{
$this->_get_datatables_query();
if ($_POST['length'] != -1)
$this->db->limit($_POST['length'], $_POST['start']);
$query = $this->db->get();
return $query->result();
}
function count_filtered()
{
$this->_get_datatables_query();
$query = $this->db->get();
return $query->num_rows();
}
public function count_all()
{
$this->db->from($this->table);
return $this->db->count_all_results();
}
<div class="navbar navbar-expand navbar-white navbar-light">
<!--left navbar / Data Keluarga label-->
<div class="col-sm-6 float-left">
<h5>Data Keluarga Personil</h5>
</div>
<!-- Right navbar links -->
<ul class="navbar-nav ml-auto">
<!-- Navbar Search, filter, plus data -->
<li class="nav-item">
<div class="form-inline">
<div class="input-group" data-widget="search-bar">
</div>
</div>
</li>
<!-- Filter Dropdown Menu -->
<li>
</li>
<!-- Plus data dropdown menu -->
<li>
<a class="btn btn-default" data-toggle="dropdown" href="#">
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
</div>
</li>
</ul>
</div>
<div class="card">
<div class="table-responsive p-0">
<table id="table" class="table table-hover text-nowraps">
<thead>
<tr>
<th>Nama</th>
<th>id personil</th>
<th>Hubungan</th>
<th>Tanggal Lahir</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
public function ajax_list()
{
$list = $this->dk->get_datatables();
$data = array();
//$no = $_POST['start'];
foreach ($list as $dk) {
//$no++;
$row = array();
$row[] = $dk->nama;
$row[] = $dk->hubungan;
$row[] = $dk->personilid;
$row[] = $dk->lahir;
//add html for action
$row[] = '<a class="btn btn-sm btn-primary" href="javascript:void(0)" title="Edit" onclick="edit_person(' . "'" . $dk->id . "'" . ')"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
<a class="btn btn-sm btn-danger" href="javascript:void(0)" title="Hapus" onclick="delete_person(' . "'" . $dk->id . "'" . ')"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->dk->count_all(),
"recordsFiltered" => $this->dk->count_filtered(),
"data" => $data,
);
//output to json format
echo json_encode($output);
}
公共函数ajax\u list()
{
$list=$this->dk->get_datatables();
$data=array();
//$no=$_POST['start'];
foreach($dk){
//$no++;
$row=array();
$row[]=$dk->nama;
$row[]=$dk->hubungan;
$row[]=$dk->personilid;
$row[]=$dk->lahir;
//添加用于操作的html
$row[]='
';
$data[]=$row;
}
$output=array(
“draw”=>$\u POST['draw'],
“recordsTotal”=>this->dk->count_all(),
“recordsFiltered”=>this->dk->count\u filtered(),
“数据”=>$data,
);
//输出为json格式
echo json_编码($output);
}
这些是DataTable
JS插件的默认功能。您可以在options对象中配置所需的功能(请参阅文档)。然后还需要为在中创建的搜索编写自定义搜索green@charlietfl你能分享一个参考链接吗?因为我真的不知道如何从文档中创建自定义表过滤器…@charlietfl我应该在我的模型中将“搜索”从if($\u POST['search']['value'])更改吗?