Gestion de la page courante dans une pagination

a marqué ce sujet comme résolu.

Bonjour à tous, Après avoir lu et testé le super tuto de Ymox Paginer avec PHP et MySQL, j’ai deux petites questions, que je ne parviens pas à régler : 1) Y aurait-il un moyen de ne pas mettre de <a> sur le numéro de la page en cours, dans la liste des liens ? (je ne maîtrise pas bien les boucles…) 2) L’un des premiers commentaires proposait d’appeler la page 1 si l’url envoyait un nombre décimal ou négatif, ce que j’ai mis en place. J’ai essayé ensuite d’améliorer la condition, en appelant la dernière page si l’url envoie un nombre plus grand que le nombre total de pages, mais malgré différents essais ça ne fonctionne pas (à chaque fois ça me fait retomber sur la page 1) Merci :)

Salut,

Ce serait plus facile si tu nous montrais les portions pertinentes du code, pour qu’on puisse t’aider plus concrètement. :)

Pour le 1, c’est possible, mais il faut voir ton code pour apporter une réponse plus précise. Pour le 2, pareil.

Merci à vous, oui en effet… En fait mon code ne diffère pas trop de celui du tuto, si ce n’est évidemment pour les champs de ma bdd qui sont très différents… :B pour la question 2, voici ce que j’ai ajouté, et qui fonctionne :

$page = intval($_GET['page']); // Conversion forcée en entier
// Si le nombre est invalide, on demande la première page par défaut
if($page <= 0) {
    $page = 1;
}

J’ai voulu ajouter la même condition avec

if($page > $nombreDePages) {
    $page = $nombreDePages;
}

pour la question 1, voici la boucle : (c’est donc celle du tuto, telle quelle, parce que je ne sais pas pourquoi, j’ai du mal avec la logique des boucles…

// Partie "Liens"
/* On calcule le nombre de pages */
$nombreDePages = ceil($nombredElementsTotal / $limite);

/* Si on est sur la première page, on n'a pas besoin d'afficher de lien
 * vers la précédente. On va donc l'afficher que si on est sur une autre
 * page que la première */
if ($page > 1):
    ?><a href="?page=<?php echo $page - 1; ?>">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="?page=<?php echo $i; ?>"><?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="?page=<?php echo $page + 1; ?>">Page suivante</a><?php
endif;
?>
+0 -0

Salut !

Au niveau logique, ta demande revient à ce qui suit.

SI $i vaut la même chose que $page
    ALORS on n'affiche pas la balise <a …></a>
    SINON on affiche la balise <a …></a>

Je pense que tu devrais savoir où et comment implémenter ça dans le code  ;)

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