TUTO PHP - Système de pagination


On continue les cas pratiques en PHP avec un système de pagination qui est un élément clé en PHP: énormément de sites internet utilisent ce genre de systèmes ! De plus, il nous sera possible d'adapter ce système afin d'en faire un Infinite Scroll Grand sourire (nous verrons ça dans le prochain tuto PHP ;-))

Code du tuto:
Veuillez vous connecter pour afficher le code.
Pas encore de compte ? Créez-en un ici !


A propos de l'auteur

Boris Flesch
Boris Flesch

Salut tout le monde ! Je m'appelle Boris, j'ai 16 ans et je suis passionné d'informatique et de technologie. Je partage cette passion à travers mes vidéos que tu peux retrouver sur YouTube sous le nom de PrimFX ou bien sur ce site bien sûr (tutoriels de programmation (HTML, CSS, PHP), gameplays, vlogs high-tech...). @+

A voir aussi

8 Commentaires

POSTER UN COMMENTAIRE

Vous devez être connecté pour pouvoir poster un commentaire...

Pas encore de compte ? Créez-en un ici !



  • Photo de profil de SkaalZealot

    SkaalZealot

    7 Décembre 2017 à 23:53

    Je suis extrêmement gentil je vous propose la version POO remplacer les requête par les votre.




    <?php

    Class Home{


    private function Params(){
    return 10;
    }

    //total de page a afficher
    private function PagesMax(){

    return $this->Params()->GetParam(2);

    }

    //nombre d'article en base
    public function CountWorks(){

    global $db;

    $CountWorks = $db->query('SELECT id FROM works WHERE posted=1');

    return $CountWorks->rowCount();

    }

    //on divise le total des page
    private function PageTotales(){

    return ceil($this->CountWorks()/$this->PagesMax());
    }

    //demarrage de la pagination
    private function StartPager(){

    return ($this->CurrentPage()-1)*$this->PagesMax();

    }


    //la limite de la pagination
    private function Limited(){

    return $this->StartPager() .','. $this->PagesMax();

    }

    //la page courante
    private function CurrentPage(){

    if(isset($_GET['pager']) AND !empty($_GET['pager']) AND $_GET['pager'] > 0 AND $_GET['pager'] <= $this->PageTotales()) {

    $CurrentPage = $_GET['pager'];

    } else {
    //si id null alors page sera egal 1
    $CurrentPage = 1;

    }

    return $CurrentPage;

    }


    //la vue de la pagination
    public function Pagination($nb=2){

    //pagination current
    $pagination = '<div id="pagination">';
    for($i=1; $i <= $this->PageTotales(); $i++) {

    if($i <= $nb || $i > $this->PageTotales() - $nb || ($i > $this->CurrentPage()-$nb && $i < $this->CurrentPage()+$nb)){

    if($i == $this->CurrentPage()){

    $pagination .= $i.' ';

    }elseif($i == $this->CurrentPage()+1){

    $pagination .= '<a href="'.WEBROOT.'home/'.$i.'" class="suivant">'. $i .'</a>' ;

    }else{

    $pagination .= '<a href="'.WEBROOT.'home/'.$i.'">'. $i .'</a>' ;

    }

    }

    }
    $pagination .= '</div>';

    return $pagination;
    }


    //la requette qui affiche les article use ias-ajax infinita scroll
    public function HomeWorks(){

    global $db;

    $limited = $this->Limited();

    return $db->query("

    SELECT works.id,
    works.name,
    works.writer,
    works.content,
    works.posted,
    works.date,
    works.slug,
    images.name AS image_name,
    categories.cat_name,
    categories.id AS catid,
    users.email,
    users.username,
    users.avatar,
    comments.post_id,
    COUNT(comments.post_id) AS nbcoms

    FROM works

    LEFT JOIN users ON users.username = works.writer

    LEFT JOIN categories ON works.category_id=categories.id

    LEFT JOIN comments ON comments.post_id = works.id

    LEFT JOIN images ON images.id = works.image_id

    WHERE works.posted=1

    GROUP BY works.id

    ORDER BY works.date DESC LIMIT $limited

    ");

    }


    }

  • Photo de profil de DJOEL

    DJOEL

    1 Novembre 2017 à 20:46

    Bonjour j'ais de difficulté à créer le système avatar pourriez-vous m'aider :-( Merci.

  • Photo de profil de Vaudoo

    Vaudoo

    24 Octobre 2017 à 02:04

    Bonjour j'ai un soucis avec le rowCount() j'arrive pas a trouver d'ou cela peut venir :/

  • Photo de profil de Vaudoo

    Vaudoo

    24 Octobre 2017 à 02:04

    Bonjour j'ai un soucis avec le rowCount() j'arrive pas a trouver d'ou cela peut venir :/

  • Photo de profil de Daiinel

    Daiinel

    28 Août 2016 à 17:52

    Salut, merci pour ce tuto, j'ai une petite question.



    Par exemple je souhaiterai afficher une pagination comme ceci : 1,2 ... 12, ,13, 14, 15, 16, ... 120

    Comment pouvons nous procéder ?

  • Photo de profil de toufik

    toufik

    20 Août 2016 à 18:20

    merci

  • Photo de profil de loulouweb

    loulouweb

    3 Avril 2016 à 13:20

    Bonjour,

    Que dois-je faire si je souhaite faire une pagination alphabétique ?

    Merci

  • Photo de profil de Selenium

    Selenium

    19 Février 2016 à 19:01

    On peut voir la structure de ta base de données ?