eviiter contenu dupliqué pagination 1 et page par default

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : eviiter contenu dupliqué pagination 1 et page par default

Re: eviiter contenu dupliqué pagination 1 et page par default

par Ryle » 29 juil. 2019, 16:00

Hello !

Dans ta boucle for qui affiche les numéros de pages, tu peux inclure un if() qui test sur quelle page tu te trouves ($page) et qui n'affiche pas de lien si celle-ci est égale à $i :
                    /* On va effectuer une boucle autant de fois que l'on a de pages */
                    for ($i = 1; $i <= $nombreDePages; $i++):
                       if ($page == $i) 
                          echo  $i . ' ';
                       else
                          echo '<a href="' . $pagination . $i . '.html">' . $i . '</a> ';
                    endfor;

eviiter contenu dupliqué pagination 1 et page par default

par yoann38 » 26 juil. 2019, 22:46

Salut tout le monde, j'ai regler mon problème de pagination.

Tout marche nikel, par contre je vois un problème que d'autres doivent avoir aussi ma requete de base affiche donc des résultats mais ces derniers sont identique à la page 1, avez vous une solution pour éviter ça ?
// Page
    $page = (!empty($_GET['page']) ? (int)$_GET['page'] : 1);
    $limite = 1;
    $debut = ($page - 1) * $limite;
     
    // Requetes bars selon option
    $sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM actu WHERE ville = :ville AND categorie = :categorie';
        if (isset($_POST['terasse']) && isset($_POST['parking']) && isset($_POST['wifi'])) {
            $sql .= ' AND terasse = 1 AND parking = 1 AND wifi = 1';
        } else if (isset($_POST['terasse'])) {
            $sql .= ' AND terasse = 1';
        } else if (isset($_POST['parking'])) {
            $sql .= ' AND parking = 1';
        } else if (isset($_POST['wifi'])) {
            $sql .= ' AND wifi = 1';
        } else if (isset($_POST['restauration'])) {
            $sql .= ' AND restauration = 1';
        }
     
    $sql .= ' LIMIT :limite OFFSET :debut'; // limite à 5
    $sql = $bdd->prepare($sql);
    $sql->bindParam(':ville', $ville, PDO::PARAM_STR);
    $sql->bindValue(':categorie', $categorie, PDO::PARAM_STR);
    $sql->bindValue('debut', $debut, PDO::PARAM_INT);
    $sql->bindValue('limite', $limite, PDO::PARAM_INT);
    $sql->execute();
     
    $resultFoundRows = $bdd->query('SELECT found_rows()');
    $nombredElementsTotal = $resultFoundRows->fetchColumn();
    $nombreDePages = ceil($nombredElementsTotal / $limite);
<?php
                    if(!empty($ville)){
                        $pagination = simplification($ville).'-page-';
                    }
                    if ($page > 1):
                        ?><a href="<?php echo $pagination; ?><?php echo $page - 1; ?>.html">Page précédente</a> — <?php
                    endif;
 
                    /* On va effectuer une boucle autant de fois que l'on a de pages */
                    for ($i = 1; $i <= $nombreDePages; $i++):
                        ?><a href="<?php echo $pagination; ?><?php echo $i; ?>.html"><?php echo $i; ?></a> <?php
                    endfor;
 
                    /* Avec le nombre total de pages, on peut aussi masquer le lien
                     * vers la page suivante quand on est sur la dernière */
                    if ($page < $nombreDePages):
                        ?>— <a href="<?php echo $pagination; ?><?php echo $page + 1; ?>.html">Page suivante</a><?php
                    endif;
 
                    }
                    ?>
Le problème est que ma boucle affiche les meme resultats avec la requete de base et avec la page 1, normal vu le code mais j'aimerais faire en sorte que si page est vide alors le bouton 1 de la pagination n'est pas cliquable en gros