Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Wiki
Pages
Dernière activité
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
Tutoriel - Faire une pagination
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Paul GTP" data-source="post: 7406084" data-attributes="member: 315249"><p>I'm here <img src="/images/smiley-pack/neo.gif" class="smilie" loading="lazy" alt=":neo:" title="Neo :neo:" data-shortname=":neo:" /></p><p>--</p><p></p><p>Il y a plus simple avec PDOStatement::rowCount je trouve <img src="/data/assets/smilies/joueur.gif" class="smilie" loading="lazy" alt=":p" title="Joueur :p" data-shortname=":p" /></p><p>[CODE]</p><p>$count = $bdd->query("SELECT * FROM items")->rowCount();</p><p>[/CODE]</p><p>--</p><p></p><p>Ici je pense que tu as fait une petite erreur non ? Tu as mis $offset au niveau de LIMIT et $limit après...</p><p>Au niveau du nom de tes variables ça ne correspond pas et dans mes scripts de pagination personnellement je préfère rajouter "OFFSET" même si c'est implicite <img src="/data/assets/smilies/joueur.gif" class="smilie" loading="lazy" alt=":p" title="Joueur :p" data-shortname=":p" /></p><p>[CODE]</p><p>SELECT [...] LIMIT :limit OFFSET :offset</p><p>[/CODE]</p><p>--</p><p></p><p>Par ailleurs, tes requêtes ne sont pas vraiment sécurisées. En un sens oui, vu que tu les sécurises préalablement avec tes min() et max() mais c'est une mauvaise habitude de faire des query quand tu as des variables à manipuler.</p><p>Ici, je recommande vivement d'utiliser une requête préparée, ça devrait être le cas à chaque fois que tu manipules une requête avec des variables <img src="/data/assets/smilies/joueur.gif" class="smilie" loading="lazy" alt=":p" title="Joueur :p" data-shortname=":p" /></p><p>[CODE]</p><p>$items = $pdo->prepare('SELECT * FROM items ORDER BY id ASC LIMIT :limit OFFSET :offset');</p><p>$items->execute([</p><p> 'limit' => $limit,</p><p> 'offset' => $offset</p><p>]);</p><p>[/CODE]</p><p>--</p><p></p><p>Dans l'idée, tu peux faire ça (à améliorer <img src="/data/assets/smilies/joueur.gif" class="smilie" loading="lazy" alt=":p" title="Joueur :p" data-shortname=":p" />)</p><p>[CODE]</p><p>$page : la page actuelle</p><p>$totalPages : le nombre total de pages</p><p>x : la dernière page</p><p></p><p>Si $totalPages > 10</p><p> Afficher les 3 premières pages</p><p> Si !in_array($page != [1, 2, 3, 4, x, x - 1, x - 2, x - 3]</p><p> Afficher "..."</p><p> Afficher $page</p><p> Afficher "..."</p><p> Sinon $page == 4 ou $page == x - 3</p><p> Afficher $page</p><p> Afficher "..."</p><p> Sinon $page == x - 3</p><p> Afficher "..."</p><p> Afficher $page</p><p> Sinon</p><p> Afficher "..."</p><p> Fin Si</p><p> Afficher les 3 dernières pages</p><p>Sinon</p><p> Afficher toutes les pages</p><p>Fin Si</p><p>[/CODE]</p></blockquote><p></p>
[QUOTE="Paul GTP, post: 7406084, member: 315249"] I'm here :neo: -- Il y a plus simple avec PDOStatement::rowCount je trouve :p [CODE] $count = $bdd->query("SELECT * FROM items")->rowCount(); [/CODE] -- Ici je pense que tu as fait une petite erreur non ? Tu as mis $offset au niveau de LIMIT et $limit après... Au niveau du nom de tes variables ça ne correspond pas et dans mes scripts de pagination personnellement je préfère rajouter "OFFSET" même si c'est implicite :p [CODE] SELECT [...] LIMIT :limit OFFSET :offset [/CODE] -- Par ailleurs, tes requêtes ne sont pas vraiment sécurisées. En un sens oui, vu que tu les sécurises préalablement avec tes min() et max() mais c'est une mauvaise habitude de faire des query quand tu as des variables à manipuler. Ici, je recommande vivement d'utiliser une requête préparée, ça devrait être le cas à chaque fois que tu manipules une requête avec des variables :p [CODE] $items = $pdo->prepare('SELECT * FROM items ORDER BY id ASC LIMIT :limit OFFSET :offset'); $items->execute([ 'limit' => $limit, 'offset' => $offset ]); [/CODE] -- Dans l'idée, tu peux faire ça (à améliorer :p) [CODE] $page : la page actuelle $totalPages : le nombre total de pages x : la dernière page Si $totalPages > 10 Afficher les 3 premières pages Si !in_array($page != [1, 2, 3, 4, x, x - 1, x - 2, x - 3] Afficher "..." Afficher $page Afficher "..." Sinon $page == 4 ou $page == x - 3 Afficher $page Afficher "..." Sinon $page == x - 3 Afficher "..." Afficher $page Sinon Afficher "..." Fin Si Afficher les 3 dernières pages Sinon Afficher toutes les pages Fin Si [/CODE] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
Tutoriel - Faire une pagination
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut