2013-10-17 7 views
0

Je suis nouveau en utilisant codeigniter donc je suis un peu confus maintenant.pagination codeigniter ne se charge pas correctement

Lorsque je passe l'objet de données de joueurs à la vue, il répertorie tous correctement. J'essaie d'utiliser la pagination de codeigniter.

Je chargé la fonction en pagination dans mon contrôleur:

public function playersHub(){ 
    $playersData = $this->cms_model->getAllPlayers(); 
    $pageConf = array(
     'base_url' => base_url('home/playersHub/'), 
     'total_rows' => count($playersData), 
     'per_page' => 20, 
     'uri_segment' => 3, 
    ); 
    $this->pagination->initialize($pageConf); 
    $data = array(
     'players'=> $playersData, 
     'content'=> 'home', 
     'link' => $this->pagination->create_links() 
    ); 
    $this->load->view('template/template',$data); 
} 

À mon avis:

<div class="container-fluid"> 
<div class="row-fluid"> 
    <table class = "table table-strip"> 
     <?php foreach($players as $p): ?> 
      <tr> 
       <td><?php echo $p->ufbid; ?></td> 
       <td><?php echo $p->uname; ?></td> 
       <td><?php echo $p->ulocation; ?></td> 
       <td><?php echo $p->uemail; ?></td> 
       <td><?php echo $p->umobile; ?></td> 
       <td><?php echo (($p->ugrand == 0) ? 'no':'yes'); ?></td> 
       <td><?php echo $p->points; ?></td> 
       <td><?php echo $p->pticks; ?></td> 
      </tr> 
     <?php endforeach; ?> 
     <tr><td colspan = "9"><?php echo $link; ?></td></tr> 
    </table> 

</div> 

Je chargé la pagination dans ma méthode constructeur. Il crée une pagination mais les données sont toujours dans une page. Quand je clique sur 2 ou "suivant", ça fait toujours la même chose.

+0

vous devez appeler 'getAllPlayers()' 'nouveau avec certains limit' pour afficher –

+0

appeler dans la vue? –

Répondre

2

1.Chargez la bibliothèque première pagination:

$this->load->library('pagination'); 

2.Return le nombre correct de la base de données, faire une autre fonction pour renvoyer le nombre total. Ne comptez pas les données renvoyées par le getAllPlayers(). Utilisez getAllPlayers() pour renvoyer 20 (per_page) les données à afficher dans la page en fonction du offset($this->uri->segment(3)) dans votre cas.

Par exemple.

function playersHub(){ 
    $perPage = 20; 
    $playersData = $this->cms_model->getAllPlayers($perPage, $this->uri->segment(3)); 
    $pageConf = array(
     'base_url' => base_url('home/playersHub/'), 
     'total_rows' => $this->model_name->count_all(), 
     'per_page' => $perPage, 
     'uri_segment' => 3, 
    ); 
    $this->pagination->initialize($pageConf); 
    $data = array(
     'players'=> $playersData, 
     'content'=> 'home', 
     'link' => $this->pagination->create_links() 
    ); 
    $this->load->view('template/template',$data); 
} 

#function to count all the data in the table 
function count_all(){ 
    return $this->db->count_all_results('table_name'); 
} 

#function to return data from the table depending on the offset and limit 
function getAllPlayers($limit, $offset = 0){ 
    return $this->db->select('')->where('')->get('table_name', $limit, $offset)->result_array(); 
} 
+0

J'ai chargé la pagination dans ma méthode constructeur. –

+0

cela a-t-il fonctionné pour vous? –

+0

cela a fonctionné mais le 3ème segment d'uri est ce "& per_page = 20". le contrôleur retourne les mêmes données chaque fois que je clique sur suivant –

0

Quelque chose comme ça

public function playersHub(){ 
$playersData = $this->cms_model->getAllPlayers(); 
$pageConf = array(
    'base_url' => base_url('home/playersHub/'), 
    'total_rows' => count($playersData), 
    'per_page' => 20, 
    'uri_segment' => 3, 
); 
$this->pagination->initialize($pageConf); 


//get the start 
    $start = ($this->uri->segment(3))?$this->uri->segment(3):0; 
    //apply the pagination limits.You may need to modify your model function 
    $playersData = $this->cms_model->getAllPlayers($start,$pageConf['per_page']); 

$data = array(
    'players'=> $playersData, 
    'content'=> 'home', 
    'link' => $this->pagination->create_links() 
); 
$this->load->view('template/template',$data); 

}

Questions connexes