Nombre de ligne dans une liste avec pagination

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

Bonjour, je me permets de poster mon problème ici, car je ne trouve pas la solution sur le net…

J’ai réussi à créer, sur le site que je suis en train de faire, un système de pagination où y a tous les noms d’utilisateur et j’ai créé à côté une petite box pour choisir le nombre de ligne qu’on veut afficher dans la liste (10,20,30…). Mais voilà que tout fonctionnait à merveille, après avoir ajouté la box, j’ai remarqué que je ne pouvais plus changer de page sans appliquer le nombre de ligne que je souhaite afficher. En gros, je suis obligé de commencer par cliquer sur le nombre de ligne à afficher avant de pouvoir jongler entre les différentes pages, si je ne fais pas ça, ça me bloque sur la première liste de la page avec mes 10 lignes par défaut… J’espère avoir été clair, si besoin je posterai des codes si quelqu’un veut bien m’aider ?…

+0 -0

CODE PHP Ce code permet de faire le choix de ligne de la box

<?php
if(isset($_GET['lines']) && !empty($_GET['lines']) && ctype_digit($_GET['lines']) == 1) {
  $limite = $_GET['lines'];
}else{
  $limite = 10; 
}
?>
<form method="get">
  <label>Number of lines per page</label>
  <select name="lines">
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
    <option value="40">40</option>
    <option value="50">50</option>
    <option value="60">60</option>
    <option value="70">70</option>
    <option value="80">80</option>
    <option value="90">90</option>
    <option value="100">100</option>
  </select>
  <input type="hidden" name="page" value="<?php echo $page ?>">
  <button class="btn btn-primary btn-xs" type="submit">Apply</button>
</form>

Et là c’est les boutons de la pagination, je crois que le problème viens du lien, mais je sais pas comment faire…

<?php
// 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):
    ?> <li class="page-item"> <a class="page-link" href="user.php?page=<?php echo $page - 1; ?>&&lines=<?php echo $_GET['lines'] ?>">Previous</a> </li> <?php
endif;

/* On va effectuer une boucle autant de fois que l'on a de pages */
for ($i = 1; $i <= $nombreDePages; $i++):
    ?> <li class="page-item"> <a class="page-link" href="user.php?page=<?php echo $i; ?>&&lines=<?php echo $_GET['lines'] ?>"><?php echo $i; ?></a> </li> <?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):
    ?> <li class="page-item"> <a class="page-link" href="user.php?page=<?php echo $page + 1; ?>&&lines=<?php echo $_GET['lines'] ?>">Next</a> </li> <?php
endif;
?>

Salut !

Il faut que tu "re-sélectionnes" le nombre d’éléments par page choisi en ajoutant checked="checked" à l’option correspondante de ton <select>. Tu n’as pas vraiment d’autre choix que d’ajouter un test dans chaque option pour savoir si la valeur reçue correspond à celle affichée.

+1 -0

Ymox te suggère de te remémorer pour chaque rechargement de la page principale, le nombre de page sectionnée par l’utilisateur

Pour ce faire, la balise option à un attribut checked qui doit valoir "checked" lorsqu’on sélectionne l’option en question

Suffit donc de tester quelle option a été sélectionnée et de mettre ou non cette attribut

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