La pagination avec Codeigniter

Le problème exposé dans ce sujet a été résolu.

Bonjour, j’ai regarder mais je ne penses pas que j’ai vu un message similaire sur le forum. Alors voilà, je suis en train de dompter codeigniter 3 (après avoir créer un petit framework perso et me buté au question de sécurité :p.. mais c’est pas le sujet du jour haha !).

Donc voilà, je créer mes pages tranquillou, me fais un petit CRUD système qui tiens la route, puis j’appel la library pagination pour tester un peu le bouzin. Alors peut être que je suis aveugle mais je ne trouve pas la solution à un problème tout bête. La pagination, quelque soit la page qui est appelée m’affiche la même chose… Alors j’ai pas la science infuse loin de là et je suis pas parfait en programmation mais Je comprends pas. Un truc m’échappe (et il est fort probable qu’il soit très simple haha mais j’ai pas mon canard en plastique :()

Donc voici le code en question :

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

class News extends CI_Controller {

    const NB_NEWS_PER_PAGE = 1;

    public function index($get_nb_news  = 1){
        $this->load->library('pagination');
        $this->load->model('newsModel', 'News');
        $data = array();
        $total_news = $this->News->count();

        /*
        *   Pagination
        */

        if($get_nb_news > 1){
            if($get_nb_news <= $total_news){
                $nb_news = intval($get_nb_news);
            }
            else{
                $nb_news = 1;
            }
        }else{
            $nb_news = 1;
        }

        $this->pagination->initialize(array(
            'base_url' => base_url() . 'news/index/page',
            'total_rows' => $total_news,
            'per_page' => self::NB_NEWS_PER_PAGE,
            'uri_segment' => 3
        ));

        $data['pagination'] = $this->pagination->create_links();
        $data['nb_news'] = $total_news;

        $data['posts'] = $this->News->read(
            'id, slug, name, content',
            array(
                'type' => 2,
                'online' => 1
            ),
            $nb = self::NB_NEWS_PER_PAGE,
            $begin = $nb_news - 1
        );
        $this->layout->view('news/list', $data);
    }
}
+0 -0

Bonjour,

Je pense que le problème ne vient pas de cet extrait.

Mais de la requête SQL exécutée par ta classe DAO :

        $data['posts'] = $this->News->read(
            'id, slug, name, content',
            array(
                'type' => 2,
                'online' => 1
            ),
            $nb = self::NB_NEWS_PER_PAGE,
            $begin = $nb_news - 1
        );

+1 pour le canard en plastique :p

edit : à moins que ce soit un problème de routage.

+0 -0

J’ai bien vérifié ma classe, je ne trouves pas de problèmes particulier. J’ai bien vérifier si je ne me trompais pas dans le limit() mais il me semble juste. Fichtre de Codeigniter haha !

public function read($select = "*", $where = array(), $nb = null, $begin = null) {
  return $this->db->select($select)
                  ->from($this->table)
                  ->where($where)
                  ->limit($nb, $begin)
                  ->get()
                  ->result();
}

Ce qui est du routing, je n’es pas créer des règle particulières, a vrai dire, je n’y ai pas encore fais un tour. Je vais aller voir ce que ça donne mais je ne penses pas que le soucis vienne de là personnellement.

+0 -0

Je suis quasiment sûr que c’est un problème de route. En lisant ton code, j’ai l’impression que tu espères que le numéro de la page sera transmis à ta fonction index().

Or il s’avère que la solution est bien différente en pratique (voir ce tutoriel) :

$start_index = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte