Pagination PHP MySQL

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

Bonjour,

Je viens de suivre avec succès le tuto traitant de la pagination avec PHP et MySQL. Mille mercis !! :D

Mais… Mais j’ai un truc que je n’arrive pas à résoudre et je prends le risque de me faire houspiller sur le forum à poser une question aussi…

(inspiration) Les commandes de pagination s’affichent en colonnes et je ne parviens pas à les afficher en ligne… :euh: Comment faire svp ? Comme j’ai hâte de vous lire… :D

Merci !

Ma foi… non ! Je te montre :

<section>
        <h2>L'actu en bref !</h2>
        <div id="zoneActu">
            <?php
                $page = (!empty($_GET['page']) ? $_GET['page'] : 1);
                $limite = 6;
                $debut = ($page - 1) * $limite;
                $query = 'SELECT SQL_CALC_FOUND_ROWS id, image, titre, resume  
                                    FROM rc_actualite
                                    ORDER BY id DESC 
                                    LIMIT :limite OFFSET :debut';
                $query = $bdd->prepare($query);
                $query->bindValue('debut',$debut,PDO::PARAM_INT);
                $query->bindValue('limite',$limite,PDO::PARAM_INT);
                $query->execute();
                
                $resultFoundRows = $bdd->query('SELECT found_rows()');
                $nombredElementsTotal = $resultFoundRows->fetchColumn();
                while ($donnees = $query->fetch()) {
                    
                    echo '
                        <div class="actualite">
                            <div class="part1">
                                <a href="actualite.php?titre=' .stripslashes($donnees["titre"]). '" title="lire le détail"><img src="images/actualite/' .$donnees['image']. '" alt="" /></a>
                            </div>
                            
                            <div class="part2">
                                <h4><a href="actualite.php?titre=' .stripslashes($donnees["titre"]). '" title="lire le détail">' .stripslashes($donnees["titre"]). '</a></h4>
                                <p>' .stripslashes($donnees['resume']). '</p>
                                <p><a href="actualite.php?titre=' .stripslashes($donnees["titre"]). '" title="lire le détail">Lire la suite&#8230;</a></p>
                            </div>
                        </div>';
                
                }
                
                //Pagination
                $nombreDePages = ceil($nombredElementsTotal / $limite);
                if ($page > 1):
                    ?><a href="?page=<?php echo $page - 1; ?>">&#171;&#171;</a><?php
                endif;

                for ($i = 1; $i <= $nombreDePages; $i++):
                    ?><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> <?php
                endfor;

                if ($page < $nombreDePages):
                    ?><a href="?page=<?php echo $page + 1; ?>">&#187;&#187;</a><?php
                endif;
                
                $query->closeCursor();
            ?>
        </div>
        </section>

Alors ? C’est grave Docteur ?

+0 -0

Si je comprends bien, tes « commandes de pagination » sont les numéros de pages, et ceux-ci ne s’affichent pas en ligne ?

Tu peux nous montrer le HTML résultant pour l’entier de la page ?

Edit

Mmm, la coloration syntaxique du PHP est malheureuse depuis le "nouveau zMarkdown"…

+0 -0

Ah mais peut-être que… j’utilise les flexbox. Mes actualités sont affichées en colonnes. Je vais tenter de passer la zone de pagination en flex-direction: row;

….

Et voilà ! Merci A-312, j’ai bien à présent ma pagination en ligne !!

Du coup, j’en profite : comment faire pour ne pas afficher toutes les pages ? Par exemple, quand j’arriverai à un nombre de page de ouf! comment n’afficher que les liens vers les trois précédentes et les trois suivantes svp ?

+0 -0

Du coup, j’en profite : comment faire pour ne pas afficher toutes les pages ? Par exemple, quand j’arriverai à un nombre de page de ouf! comment n’afficher que les liens vers les trois précédentes et les trois suivantes svp ?

Marie08

J’ai un exemple de logique ici. Ce n’est pas en PHP, mais vu que c’est une logique de conditions et que ça me paraît assez clair même avec Twig, je ne vais pas adapter, du moins pas tout de suite  ^^

Le résultat, quand on est sur une page allant de la 5e à la 5e avant-dernière, fournit ce code HTML :

<ul class="pagination justify-content-sm-center">
    <li class="page-item"><a href="/?page=4" class="page-link"><i class="fa fa-chevron-left"></i></a></li>
    <li class="page-item"><a href="/?page=1" class="page-link">1</a></li>
    <li class="page-item"><a class="page-link"></a></li>
    <li class="page-item"><a href="/?page=3" class="page-link">3</a></li>
    <li class="page-item"><a href="/?page=4" class="page-link">4</a></li>
    <li class="page-item active"><a href="/?page=5" class="page-link">5</a></li>
    <li class="page-item"><a href="/?page=6" class="page-link">6</a></li>
    <li class="page-item"><a href="/?page=7" class="page-link">7</a></li>
    <li class="page-item"><a class="page-link"></a></li>
    <li class="page-item"><a href="/?page=33" class="page-link">33</a></li>
    <li class="page-item"><a href="/?page=6" class="page-link"><i class="fa fa-chevron-right"></i></a></li>
</ul>
Résultat du code Twig lié pour 33 pages, structure similaire pour les pages 5 à 29

Il faut mettre html au lieu de php… (pas très logique mais phph semble être pour un code sans html).

A-312

Auparavant on pouvait colorer les deux avec html+php, ce qui apparemment n’est plus possible  :'(

C’est une des raisons pour lesquelles je ne mets pas à jour certaines de mes publications, la coloration syntaxique ficherait le camp.

Et même du bête PHP, c’est tristounet (cf. premier bloc de code du message) : juste les mots-clés, les nombres et les chaînes sont en couleurs. Les fonctions comme ctype_digit(), les méthodes ou les variables sont "par défaut"…

+1 -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