Codeigniter Mysql Ajax分页排序和搜索

时间:2015-08-22 08:01:24

标签: ajax codeigniter sorting search pagination

我必须做一个codeigniter crud操作。但现在我想添加分页搜索并对其进行排序。我使用了大量的教程来做到这一点。但我无法理解。任何知道的人都可以帮助我做到这一点。谢谢。

控制器

class User_controller extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('user_model');
        $this->load->library('form_validation');
    }

        // load user_list view
        public function index()
    {   
        $this->load->view('admin_include/header');
        $this->load->view('admin_pages/user_list');
    }

        // show all the users in view 
        public function fillgrid(){
            $this->user_model->fillgrid();
        }

        function fetch_record(){
             $this->user_model->fetch_record();
        }

        // validate and insert new user data 
        public function create(){
            $this->form_validation->set_rules('firstname', 'First Name', 'required');
            $this->form_validation->set_rules('lastname', 'Last Name', 'required');
            $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
            $this->form_validation->set_rules('contact_no', 'Contact Number', 'required|numeric|max_length[10]|min_length[10]');
            if ($this->form_validation->run() == FALSE){
               echo'<div class="alert alert-danger">'.validation_errors().'</div>';
               exit;
            }
            else{
                $this->user_model->create();
            }
        }

        // edit user
        public function edit(){
            $id =  $this->uri->segment(3);
            $this->db->where('id',$id);
            $data['query'] = $this->db->get('user');
            $data['id'] = $id;
            $this->load->view('admin_pages/user_edit', $data);
            }

        // update validation
        public function update(){
                $res['error']="";
                $res['success']="";
                $this->form_validation->set_rules('firstname', 'First Name', 'required');
                $this->form_validation->set_rules('lastname', 'Last Name', 'required');
                $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
                $this->form_validation->set_rules('contact_no', 'Contact Number', 'required|numeric|max_length[10]|min_length[10]');
                if ($this->form_validation->run() == FALSE){
                $res['error']='<div class="alert alert-danger">'.validation_errors().'</div>';    
                }           
            else{
                $data = array('firstname'=>  $this->input->post('firstname'),
                'lastname'=>  $this->input->post('lastname'),
                'email'=>$this->input->post('email'),
                'contact_no'=>$this->input->post('contact_no'), 
                'address'=>$this->input->post('address'));
                $this->db->where('id', $this->input->post('hidden'));
                $this->db->update('user', $data);
                $res['success'] = '<div class="alert alert-success">One record updated Successfully</div>';
            }
            header('Content-Type: application/json');
            echo json_encode($res);
            exit;
        }

        //delete user
        public function delete(){
            $id =  $this->input->POST('id');
            $this->db->where('id', $id);
            $this->db->delete('user');
            echo'<div class="alert alert-success">One record deleted Successfully</div>';
            exit;
        }

模型

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User_model extends CI_Model {

    public function fillgrid(){

        $this->db->order_by("id", "desc"); 
        $data = $this->db->get('user');

        foreach ($data->result() as $row){
            $edit = base_url().'index.php/user_controller/edit/';
            $delete = base_url().'index.php/user_controller/delete/';
            echo "<tr>
                        <td>$row->firstname</td>
                        <td>$row->lastname</td>
                        <td>$row->email</td>
                        <td>$row->contact_no</td>
                        <td>$row->address</td>
                        <td>$row->created</td>
                        <td><a href='$edit' data-id='$row->id' class='btnedit' title='edit'><i class='glyphicon glyphicon-pencil' title='edit'></i></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='$delete' data-id='$row->id' class='btndelete' title='delete'><i class='glyphicon glyphicon-remove'></i></a></td>    
                    </tr>";

        }
        exit;
    }

    public function create(){
        $data = array('firstname'=>  $this->input->post('firstname'),
                'lastname'=>  $this->input->post('lastname'),
                'email'=>$this->input->post('email'),
                'contact_no'=>$this->input->post('contact_no'),
                'address'=>$this->input->post('address'),
                'created'=>date('d/m/y'));
            $this->db->insert('user', $data);
            echo'<div class="alert alert-success">One record inserted Successfully</div>';
            exit;
    }

   private function edit(){}

   private function delete(){}




   //2015.7.26
    //set table name to be used by all functions
 var $table = 'user';

 function fetch_record($limit, $start)
 {
  $this->db->limit($limit, $start);
  $query = $this->db->get($this->user);
  return ($query->num_rows() > 0)  ? $query->result() : FALSE;

 }

 function record_count()
 {
  return $this->db->count_all_results('user');
 }

   //2015.7.26

}

            //2015.7.26
            public function pagination(){
            $page_number = $this->input->post('page_number');
            $item_par_page = 2;
            $position = ($page_number*$item_par_page);
            $result_set = $this->db->query("SELECT * FROM user LIMIT ".$position.",".$item_par_page);
            $total_set =  $result_set->num_rows();
            $page =  $this->db->get('user') ;
            $total =  $page->num_rows();
            //break total recoed into pages
            $total = ceil($total/$item_par_page);
            if($total_set>0){
                $entries = null;
        // get data and store in a json array
                foreach($result_set->result() as $row){
                     $entries[] = $row;
                }
                $data = array(
                    'TotalRows' => $total,
                    'Rows' => $entries
                );              
                $this->output->set_content_type('application/json');
                echo json_encode(array($data));
            }
            exit;

       }

查看

 <div class="well">
                <form class="form-inline" role="form" id="frmadd" action="<?php echo base_url() ?>index.php/user_controller/create" method="POST">

                    <!--First Name-->
                    <div class="form-group">
                        <label class="sr-only" for="firstname">First Name</label>
                        <input type="text" name="firstname" class="form-control" id="firstname" placeholder="First name">
                    </div>
                    <!--/First Name-->

                    <!--Last Name-->
                    <div class="form-group">
                        <label class="sr-only" for="lastname">Last Name</label>
                        <input type="text" name="lastname" class="form-control" id="lastname" placeholder="Last Name">
                    </div>
                    <!--/Last Name-->

                    <!-- email-->
                    <div class="form-group">
                        <div class="input-group">
                            <div class="input-group-addon">@</div>
                            <input class="form-control" name="email" type="email" placeholder="Enter email">
                        </div>
                    </div>
                    <!-- email-->

                    <!--Contact-->
                    <div class="form-group">
                        <label class="sr-only" for="contact_no">Contact</label>
                        <input type="text" class="form-control" name="contact_no" id="contact_no" placeholder="contact number">
                    </div>
                    <!--/Contact-->

                    <!--Address-->
                    <div class="form-group">
                        <label class="sr-only" for="address">Address</label>
                        <input type="text" name="address" class="form-control" id="exampleInputPassword2" placeholder="Address">
                    </div>
                    <!--/Address-->

                    <!--submit-->
                    <input type="submit" class="btn btn-success" id="exampleInputPassword2" value="submit">
                    <!--/submit-->
                    </div>
                </form>
            </div>

            <table class="table">
                <thead><tr><th>First Name</th><th>Last Name</th><th>Email</th><th>Contact</th><th>Address</th><th>created</th><th>Action</th></tr></thead>
                <tbody id="fillgrid">

                </tbody>
                <tfoot></tfoot>
            </table>
    <!--        //2015.7.26-->
            <div class="row clear-fix">
            <div class="col-md-4 pull-right">
                <button  id="previous" class="btn btn-sm btn-primary">Previous</button>
                <lable>Page <lable id="page_number" name="page_number" ></lable> of <lable id="total_page" name="total_page"></lable></lable>
                <button  id="next" class="btn btn-sm btn-primary">Next</button>
            </div>
        </div>

        <div style="text-align: center">
    <!--//2015.7.26-->
        </div>
    </div>
    </div>



    <script>
    $(document).ready(function (){
        //fill data
        var btnedit='';
        var btndelete = '';
            fillgrid();
            // add data
            $("#frmadd").submit(function (e){
                e.preventDefault();
                $("#loader").show();
                var url = $(this).attr('action');
                var data = $(this).serialize();
                $.ajax({
                    url:url,
                    type:'POST',
                    data:data
                }).done(function (data){
                    $("#response").html(data);
                    $("#loader").hide();
                    fillgrid();
                });
            });



        function fillgrid(){
            $("#loader").show();
            $.ajax({
                url:'<?php echo base_url() ?>index.php/user_controller/fillgrid',
                type:'GET'
            }).done(function (data){
                $("#fillgrid").html(data);
                $("#loader").hide();
                btnedit = $("#fillgrid .btnedit");
                btndelete = $("#fillgrid .btndelete");
                var deleteurl = btndelete.attr('href');
                var editurl = btnedit.attr('href');
                //delete record
                btndelete.on('click', function (e){
                    e.preventDefault();
                    var deleteid = $(this).data('id');
                    if(confirm("are you sure")){
                        $("#loader").show();
                        $.ajax({
                        url:deleteurl,
                        type:'POST' ,
                        data:'id='+deleteid
                        }).done(function (data){
                        $("#response").html(data);
                        $("#loader").hide();
                        fillgrid();
                        });
                    }
                });

                //edit record
                btnedit.on('click', function (e){
                    e.preventDefault();
                    var editid = $(this).data('id');
                    $.colorbox({
                    href:"<?php echo base_url()?>index.php/user_controller/edit/"+editid,
                    top:50,
                    width:500,
                    onClosed:function() {fillgrid();}
                    });
                });

            });
        }

    });
    </script>

1 个答案:

答案 0 :(得分:1)

我认为你必须检查你的数据库字段名称它肯定会工作你肯定缺少一些数据库字段名称...