2015-08-22 4 views
0

Мне нужно выполнить операцию codeigniter crud. Но теперь я хочу добавить поиск и сортировку по страницам для этого. Я использовал множество учебников для этого. Но я не понимаю. Любой, кто знает, пожалуйста, помогите мне сделать это. Спасибо.Codeigniter Mysql Ajax Разбиение на страницы сортировка и поиск

контроллер

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> 
+0

вы хотите разбиение на страницы, сортировку, поиск в таблице ??? –

+0

yes iw ant, чтобы использовать это в таблице – ashik

+0

ОК, тогда я бы предпочел библиотеку jquery datatable после этого вам не нужно называть ajax, она предоставляется по умолчанию сортировка, разбиение на страницы, функции поиска, пожалуйста, попробуйте это - https: //datatables.net/examples/styling/bootstrap.html –

ответ

1

я думаю, вы должны проверить дб имя поля будет работать определенно, вам не хватает имени поля db ...