Bonjour,

J'essai actuellement de créer un système de pagination pour un site réalisé en MVC. J'ai pour cela suivi le tutoriel de Grafikart en essayant de l'adapter à l'architecture MVC.

Voilà donc ce que j'ai actuellement :

        $perPage = 6;
        $cPage = 1;

        $sql = new ChansonSQL();
        $data["chansons"] = $sql->prepareFindAll()
            ->orderBy("post_date DESC")
            ->limit(($cPage-1)*$perPage, $perPage)
            ->execute();

        $sqlB = new ChansonSQL();
        $data["nbChanson"] = $sql->prepareFindAll()
            ->execute();

        $count = count($data["nbChanson"]);
        $nbPage = ceil($count/$perPage);

        echo $count;

        for ($i = 1 ; $i <= $nbPage ; $i++) {
            echo " <a href=\"?p=$i\">$i</a> /";
        }

        if(isset($_GET['p'])) {
            $cPage = $_GET['p'];
        }
        echo $cPage;

Je récupère bien le nombre de pages existantes, le bon nombre de chansons apparaît pour une page, lorsque je survole (ou clique) sur les numéros de page, mon url passe bien à ?p=2 etc... cependant, ce sont toujours les mêmes chansons qui sont affichées.

J'aurai donc tendance à dire que le problème provient du premier paramètre de "limit" mais je ne parviens à trouver le problème exact...

Je pense avoir conscience que cette manière de faire n'est pas adaptée au MVC, mais je n'ai pour le moment pas trouver d'autres moyens de faire... tout cela se trouvant dans les Controller, l'affichage n'est pas optimal non plus...

Avez-vous d'autres méthodes à me conseiller ? Ou est-il quand même possible de faire comme ceci mais en ayant un affichage correct ?

Je vous remercie d'avance !

2 réponses


Carouge10
Réponse acceptée

Bonjour,

Avec ce code, le $cpage pour la requête vaut toujours 1.
Placer le $_get['p'] avant de faire la requête.

Youtaka
Auteur

Ah oui en effet, c'est pourtant logique...

Merci beaucoup !