2016-12-19 3 views
1

Ich versuche, meine Paginierung mit Suche, um zu sehen, warum in den Grundzustand zurückkehrt hält, wenn ich zur Seite 2.CodeIgniter Paginierung mit Suche zeigt keine zweite Seite

ich einen Blick auf einige Beispiele genommen haben, dass Ich habe gesagt, dass ich meine Suchbegriffe in Sitzungsdaten einfügen soll, damit die Suche beibehalten werden kann, aber bis jetzt hatte ich kein Glück, diese Arbeit zu machen. Mein Code kommt teilweise von dieser Seite: https://dzone.com/articles/how-paginate-search-results und ich bin mir nicht sicher, wie richtig diese Methode ist.

Das ist, was ich bisher haben

Controller:

public function date_function(){ 
    $this->load->library('form_validation'); 
    $this->form_validation->set_error_delimiters('<div class="error">', '</div>'); 
    $date_start = $this->table_DateStartHandler($this->input->post('date_start')); 
    $date_end = $this->table_DateEndHandler($this->input->post('dateend')); 
    $current_status = $this->table_StatusHandler($this->input->post('current_status')); 

    $config['base_url'] = base_url('/Report/date_function'); 
    $config['total_rows'] = $this->ControlModel->count_Date($date_start,$date_end,$current_status); 
    $config['per_page'] = 40; 
    $config['uri_segment'] = 4; 
    $config['full_tag_open'] = '<ul class="pagination">'; 
    $config['full_tag_close'] = '</ul>'; 
    $config['prev_link'] = '&lt;'; 
    $config['prev_tag_open'] = '<li>'; 
    $config['prev_tag_close'] = '</li>'; 
    $config['next_link'] = '&gt;'; 
    $config['next_tag_open'] = '<li>'; 
    $config['next_tag_close'] = '</li>'; 
    $config['cur_tag_open'] = '<li class="current"><a href="#">'; 
    $config['cur_tag_close'] = '</a></li>'; 
    $config['num_tag_open'] = '<li>'; 
    $config['num_tag_close'] = '</li>'; 

    $config['first_tag_open'] = '<li>'; 
    $config['first_tag_close'] = '</li>'; 
    $config['last_tag_open'] = '<li>'; 
    $config['last_tag_close'] = '</li>'; 

    $config['first_link'] = '&lt;&lt;'; 
    $config['last_link'] = '&gt;&gt;'; 

    $this->pagination->initialize($config); 
    $page = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0; 
    $message['datatable'] = $this->ControlModel->getSubmissions_Date($config["per_page"], $page,$date_start,$date_end,$current_status); 

    $message['links'] = $this->pagination->create_links(); 

    $message['counter'] = $config['total_rows']; 

    //$message['datatable'] = $this->ControlModel->getSubmissions(); 
    $message['message'] = ''; 
    $this->load->view('control_report',$message); 
} 

Die Funktionen, wo ich überprüfen, ob es in der Sitzung

public function table_StatusHandler($current_status){ 
    if($current_status){ 
     $this->session->set_userdata('current_status', $current_status); 
     return $current_status; 
    }elseif($this->session->set_userdata('current_status')){ 
     $current_status = $this->session->userdata('current_status'); 
     return $current_status; 
    }else{ 
     $current_status = ""; 
     return $current_status; 
    } 
} 

public function table_DateStartHandler($date_start){ 
    if($date_start){ 
     $this->session->set_userdata('date_start', $date_start); 
     return $date_start; 
    }elseif($this->session->set_userdata('date_start')){ 
     $date_start = $this->session->userdata('date_start'); 
     return $date_start; 
    }else{ 
     $date_start = ""; 
     return $date_start; 
    } 
} 

public function table_DateEndHandler($date_end){ 
    if($date_end){ 
     $this->session->set_userdata('date_end', $date_end); 
     return $date_end; 
    }elseif($this->session->set_userdata('date_end')){ 
     $date_end = $this->session->userdata('date_end'); 
     return $date_end; 
    }else{ 
     $date_end = ""; 
     return $date_end; 
    } 
} 

Hoffnung jemand Sie Benutzerdaten ist, kann helfen danken

+0

Hey, Sie müssen '' '' '' '' '' '' searchString''' auf jeder Seitenumbruch Link klicken Sie mit jQuery. – kishor10d

+0

nicht wahr? muss ich jquery verwenden? Ich würde gerne versuchen, so weit wie möglich auf PHP zu bleiben – JianYA

+0

und Sie brauchen nur ein kleines Stück Code (jQuery). Wenn Sie das Klicken der Seitenzahl verwalten, um das Formular zu senden, können Sie es tun. – kishor10d

Antwort

0

Geben Sie Ihrem Formular id als searchList. Und dann versuchen, diesen Code durch Einfügen Ihrer Ansicht

<script type="text/javascript"> 
    var baseURL = '<?php echo base_url(); ?>'; 
    jQuery(document).ready(function(){ 
     jQuery('ul.pagination li a').click(function (e) { 
      e.preventDefault();    
      var link = jQuery(this).get(0).href;    
      var value = link.substring(link.lastIndexOf('/') + 1); 
      jQuery("#searchList").attr("action", baseURL + "Report/date_function/" + value); 
      jQuery("#searchList").submit(); 
     }); 
    }); 
</script> 

In der Controller-Funktion:

public function date_function(){ 
    $this->load->library('form_validation'); 
    $this->form_validation->set_error_delimiters('<div class="error">', '</div>'); 
    $date_start = $this->table_DateStartHandler($this->input->post('date_start')); 
    $date_end = $this->table_DateEndHandler($this->input->post('dateend')); 
    $current_status = $this->table_StatusHandler($this->input->post('current_status')); 

    // You Pagination Code 


    $message["date_start"] = $this->input->post('date_start'); 
    $message["dateend"] = $this->input->post('dateend'); 
    $message["current_status"] = $this->input->post('current_status'); 

    $this->load->view('control_report',$message); 
} 

Diese drei Parameter I in Array gesendet $message, weisen sie zurück zu Ihnen Eingabesteuerungen, wenn Sie die Ansicht laden .

+0

Ich änderte die Antwort, bitte werfen Sie einen Blick, sagen Sie mir, wenn irgendein Fehler Sie haben. – kishor10d

+0

Ich versuche das und schaue es mir an – JianYA

+0

Sorry, gibt es eine Möglichkeit, diese Lösung kann ein reines PHP sein? – JianYA

Verwandte Themen