2010-04-10 7 views
1

D'accord, je suis assez nouveau dans CI et je suis coincé sur la pagination. J'effectue cette pagination sur un ensemble d'enregistrements résultant d'une requête. Maintenant, tout semble fonctionner correctement. Mais il y a probablement un problème avec le lien. J'affiche 10 résultats par page. Maintenant, si les résultats sont inférieurs à 10, alors ça va. Ou Si je récupère tous les enregistrements dans le tableau, cela fonctionne bien. Mais dans le cas où le résultat est supérieur à 10 lignes, alors les 10 premières sont parfaitement affichées, et quand je clique sur le lien de pagination pour aller à la page suivante, la page suivante affiche le reste des résultats de la requête ainsi que d'autres enregistrements dans le tableau. ??? Je suis confus .. Toute aide ??pagination CI, la méthode POST ne fonctionne pas

Voici le code modèle J'utilise ....

function getTeesLike($field,$param) 
{ 
    $this->db->like($field,$param); 
    $this->db->limit(10, $this->uri->segment(3)); 
    $query=$this->db->get('shirt'); 
    if($query->num_rows()>0){ 
     return $query->result_array(); 
    } 
} 

function getNumTeesfromQ($field,$param) 
{ 
    $this->db->like($field,$param); 
    $query=$this->db->get('shirt'); 
    return $query->num_rows(); 
} 

Et voici le code du contrôleur ....

$KW=$this->input->post('searchstr'); 
$this->load->library('pagination'); 
$config['base_url']='http://localhost/cit/index.php/tees/show/'; 
$config['total_rows']=$this->T->getNumTeesfromQ('Title',$KW); 
$config['per_page']='10'; 
$this->pagination->initialize($config); 
$data['tees']=$this->T->getTeesLike('Title',$KW); 
$data['title']='Displaying Tees data'; 
$data['header']='Tees List'; 
$data['links']=$this->pagination->create_links(); 
$this->load->view('tee_res', $data); 

Qu'est-ce que je fais mal ici ???? Pls aider ...

Je suppose que le problème est avec le $KW=$this->input->post('searchstr'); .. Parce que si je coder en dur une valeur pour $KW il fonctionne très bien. Peut-être que je devrais utiliser POST différemment ..mais comment puis-je passer la valeur du formulaire sans l'afficher, son CI donc pas GET ... ??????

+1

Pouvez-vous poster le code HTML contenant le formulaire s'il vous plaît? –

+1

On dirait que celui-ci a été résolu: http://codeigniter.com/forums/viewthread/151977/ – Billiam

+0

Merci Billiam J'ai passé toute la journée à chercher cette réponse simple souhaite que j'aurais trouvé cet article eailer –

Répondre

0

Dans contrôleur

<?php 

$KW=$this->input->post('searchstr'); 
$this->load->library('pagination'); 

$count = $this->model_name->getNumTeesfromQ($KW);//Count 


$config['base_url']= base_url().'index.php/tees/show/'; 
$config['total_rows']= $count; 
$config['per_page']='10'; 
$config['uri_segment'] = 4; 
$limit = $config['per_page']; 

$this->pagination->initialize($config); 
$page = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0; 
$data['links'] = $this->pagination->create_links(); 


$data['tees']=$this->model_name->getTeesLike($KW,$limit,$page); 
$data['title']='Displaying Tees data'; 
$data['header']='Tees List'; 

$this->load->view('tee_res', $data); 

Dans Modèle

public function getNumTeesfromQ($KW) 
{ 
    $query = $this->db->query("SELECT * FROM title WHERE table_field='$KW'"); 
    $result = $query->result_array(); 
    $count = count($result); 
    return $count; 
} 

public function getTeesLike($KW,$limit,$page) 
{ 
    $query = $this->db->query("SELECT * FROM title WHERE table_field='$KW' LIMIT $page, $limit"); 
    $result = $query->result_array(); 
    return $result; 
} 

à vue

echo toutes les données en utilisant foreach

puis au bas de la page utiliser <?php echo $links; ?> cela montrera votre Pagination

Questions connexes