Nombre de ligne dans une liste avec pagination

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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 ?…

Édité par Smada

+0 -0
Auteur du sujet

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;
?>
+0 -0

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.

Evitez qu’on vous dise de les lire : FAQ PHP et SymfonyTutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+1 -0
Auteur du sujet

Merci beaucoup pour ta réponse ! Mais je vois pas exactement ce que je dois faire, donc je dois ajouter le checked à ma liste option ? Comment ajouter un test ? Je sais je suis pas doué…

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

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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