Ma pagination ne fonctionne pas
Résolu
flexi2202
Messages postés
3822
Date d'inscription
Statut
Membre
Dernière intervention
-
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous
j'ai repris un tuto pour réaliser une pagination
https://nouvelle-techno.fr/articles/mettre-en-place-une-pagination-en-php
mais je me suis retrouve avec un premier soucis avec cette boucle
et également avec ce critère dans la requête created_at
donc après avoir chercher presque toute la nuit j ai un résultat qui apparaît mais la pagination ne fonctionne pas surement a cause de ce created_at
voici mon code si vous pourriez m aider
j'ai repris un tuto pour réaliser une pagination
https://nouvelle-techno.fr/articles/mettre-en-place-une-pagination-en-php
mais je me suis retrouve avec un premier soucis avec cette boucle
foreach($articles as $article){ ?> <tr> <td><?= $article['id'] ?></td> <td><?= $article['titre'] ?></td> <td><?= $article['created_at'] ?></td> </tr> <?php } ?>
et également avec ce critère dans la requête created_at
donc après avoir chercher presque toute la nuit j ai un résultat qui apparaît mais la pagination ne fonctionne pas surement a cause de ce created_at
voici mon code si vous pourriez m aider
<?php //activation erreur error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // On détermine sur quelle page on se trouve if(isset($_GET['page']) && !empty($_GET['page'])){ $currentPage = (int) strip_tags($_GET['page']); }else{ $currentPage = 1; } //connection require_once('bases.php'); // On détermine le nombre total d'articles $sql = "SELECT COUNT(*) AS nb FROM wp_posts a;"; // On prépare la requête $query = $bdd->prepare($sql); // On exécute $query->execute(); // On récupère le nombre d'articles $result = $query->fetch(); $nbArticles = (int) $result['nb']; // On détermine le nombre d'articles par page $parPage = 10; // On calcule le nombre de pages total $pages = ceil($nbArticles / $parPage); // Calcul du 1er article de la page $premier = ($currentPage * $parPage) - $parPage; //$reponse ancienne valeur SELECT $sql = "SELECT a.post_title , a.guid, b.meta_key, b.meta_value as level, c.meta_value as intro,d.meta_value as espace, u.display_name FROM wp_posts a LEFT JOIN wp_postmeta b ON a.ID = b.post_id LEFT JOIN wp_postmeta c ON a.ID = c.post_id LEFT JOIN wp_postmeta d ON a.ID = d.post_id LEFT JOIN wp_users u ON a.post_author = u.ID WHERE b.meta_key = 'date' AND c.meta_key = 'titre' AND d.meta_key = 'total_des_prises' AND a.post_status = 'publish' ORDER BY a.post_title DESC LIMIT :premier, :parpage ; " ; // On prépare la requête $query = $bdd->prepare($sql); $query->bindValue(':premier', $premier, PDO::PARAM_INT); $query->bindValue(':parpage', $parPage, PDO::PARAM_INT); // On exécute $query->execute(); // On récupère les valeurs dans un tableau associatif //$articles = $query->fetchAll(PDO::FETCH_ASSOC); //require_once('close.php'); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> </head> <body> <main class="container"> <div class="row"> <section class="col-12"> <h1>Liste des articles</h1> <table class="table"> <thead> <th>ID</th> <th>Titre</th> <th>Date</th> </thead> <tbody> <?php while ($donnees = $query->fetch()){ ?> <tr> <td> <?php echo $donnees["guid"]; ?></td> <td><?php echo $donnees["level"]; ?> </td> <td><?php echo $donnees ["espace"]; ?> </td> <td><?php echo $donnees ["intro"]; ?> </td> <td> <?php echo $donnees ["a.post_date"]; ?> </td> </tr> <?php } ?> </tbody> </table> <nav> <ul class="pagination"> <!-- Lien vers la page précédente (désactivé si on se trouve sur la 1ère page) --> <li class="page-item <?= ($currentPage == 1) ? "disabled" : "" ?>"> <a href="./?page=<?= $currentPage - 1 ?>" class="page-link">Précédente</a> </li> <?php for($page = 1; $page <= $pages; $page++): ?> <!-- Lien vers chacune des pages (activé si on se trouve sur la page correspondante) --> <li class="page-item <?= ($currentPage == $page) ? "active" : "" ?>"> <a href="./?page=<?= $page ?>" class="page-link"><?= $page ?></a> </li> <?php endfor ?> <!-- Lien vers la page suivante (désactivé si on se trouve sur la dernière page) --> <li class="page-item <?= ($currentPage == $pages) ? "disabled" : "" ?>"> <a href="./?page=<?= $currentPage + 1 ?>" class="page-link">Suivante</a> </li> </ul> </nav> </section> </div> </main> </body> </html>
A voir également:
- Ma pagination ne fonctionne pas
- Pagination powerpoint - Guide
- Sommaire avec pagination - Guide
- Le fichier de pagination est insuffisant pour terminer cette opération ✓ - Forum Matériel & Système
- Pagination word - Guide
- Pagination google doc à partir de la page 3 - Forum Google Docs
7 réponses
Bonjour,
Quand tu dis que ça ne marche pas ... c'est à dire ?
Un message d'erreur ?
Ou quel comportement constaté ?
Quand tu cliques sur les liens pour changer de page .. que se passe t-il ? Quelle adresse apparait dans la barre de navigation de ton navigateur ?
As tu essayé de voir si le contenu de tes variables ( en plaçant quelques var_dump.. dans ton code ) correspond à ce que tu attends ?
Quand tu dis que ça ne marche pas ... c'est à dire ?
Un message d'erreur ?
Ou quel comportement constaté ?
Quand tu cliques sur les liens pour changer de page .. que se passe t-il ? Quelle adresse apparait dans la barre de navigation de ton navigateur ?
As tu essayé de voir si le contenu de tes variables ( en plaçant quelques var_dump.. dans ton code ) correspond à ce que tu attends ?
bonjour Jordane
Merci pour la réponse
alors comme on dit une image c est mieux qu'un discours
voici ce qui ce passe
la colonne de droite avec les messages d erreur c est du a l essai de pagination avec cette valeur
voici donc une capture d écran du comportement
lorsque je clic sur les liens de la pagination cela m envois bien a une page 2 dans l url mais je vois comme résultat l index de mon site
toutes les valeurs de mes variables sont bonnes donc de ce cote tout est bien récupéré

Merci pour la réponse
alors comme on dit une image c est mieux qu'un discours
voici ce qui ce passe
la colonne de droite avec les messages d erreur c est du a l essai de pagination avec cette valeur
<td> <?php echo $donnees ["a.post_date"]; ?> </td>
voici donc une capture d écran du comportement
lorsque je clic sur les liens de la pagination cela m envois bien a une page 2 dans l url mais je vois comme résultat l index de mon site
toutes les valeurs de mes variables sont bonnes donc de ce cote tout est bien récupéré

Commençons par ton souci de variable
donc..
Tu as écrit :
Sachant que pour tes autres variables ( qui fonctionnent) tu as écrit :
Ne vois tu pas la différence ?
As tu au moins essayé ( comme je te l'ai déjà suggéré ) de faire un var_dump de ta variable ?
La variable sur laquelle faire ce var_dump étant, bien entendu, $donnees
Et donc, en faisant ça .. ne vois tu pas quelle est le "bon" nom de variable à utiliser ?
Pour ton souci de pagination ( vu qu'à l'origine, c'est ça la question.. )
Tu dis
Donc :
Avant de cliquer .. quelle est l'url de la page ?
Une fois cliqué .. que devient l'url ( je veux de vraies valeurs.. pas juste une "explication" )
A noter que dans
moi je ne mettrai pas de slash ..
A moins que ton URL de départ contienne déjà des variables dedans.. et dans ce cas, il faut commencer par récupérer l'url courante et y adjoindre ensuite ta variable page. (pour ça tu peux te baser sur la super globale
donc..
Tu as écrit :
<td> <?php echo $donnees ["a.post_date"]; ?> </td>
Sachant que pour tes autres variables ( qui fonctionnent) tu as écrit :
<td> <?php echo $donnees["guid"]; ?></td> <td><?php echo $donnees["level"]; ?> </td> <td><?php echo $donnees ["espace"]; ?> </td> <td><?php echo $donnees ["intro"]; ?> </td>
Ne vois tu pas la différence ?
As tu au moins essayé ( comme je te l'ai déjà suggéré ) de faire un var_dump de ta variable ?
La variable sur laquelle faire ce var_dump étant, bien entendu, $donnees
var_dump($donnees);
Et donc, en faisant ça .. ne vois tu pas quelle est le "bon" nom de variable à utiliser ?
Pour ton souci de pagination ( vu qu'à l'origine, c'est ça la question.. )
Tu dis
lorsque je clic sur les liens de la pagination cela m envois bien a une page 2 dans l url mais je vois comme résultat l index de mon site
Donc :
Avant de cliquer .. quelle est l'url de la page ?
Une fois cliqué .. que devient l'url ( je veux de vraies valeurs.. pas juste une "explication" )
A noter que dans
<a href="./?page=<?= $c
moi je ne mettrai pas de slash ..
<a href="?page=<?= $c
A moins que ton URL de départ contienne déjà des variables dedans.. et dans ce cas, il faut commencer par récupérer l'url courante et y adjoindre ensuite ta variable page. (pour ça tu peux te baser sur la super globale
$_SERVER['REQUEST_URI'])
waouhhhh jordane
t est fort quand même tout est presque résolu
un énorme merci
variable et pagination , tu avais raison avec le /
il reste juste un truc qui est assez embêtant c est qu il y a trop de lien de pagination
une fois que j ai parcouru tous mes articles voici ce qui ce passe
voir copie d écran
avec le nombre d article que j ai pour l instant cela devrait s arrêter a la page 16
et dans mon cas cela va jusque 185

t est fort quand même tout est presque résolu
un énorme merci
variable et pagination , tu avais raison avec le /
il reste juste un truc qui est assez embêtant c est qu il y a trop de lien de pagination
une fois que j ai parcouru tous mes articles voici ce qui ce passe
voir copie d écran
avec le nombre d article que j ai pour l instant cela devrait s arrêter a la page 16
et dans mon cas cela va jusque 185

Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci jordane pour ton aide
voici les valeurs
cela voudrais t il dire que cette variable contient 1845 lignes
c est bon j'ai trouve
avec ce code cela fonctionne
<code php><$sql = 'SELECT COUNT(*) AS nb FROM wp_postmeta WHERE (meta_key = "nombre_dablettes")';/code>
voici les valeurs
int(1845) float(185)
cela voudrais t il dire que cette variable contient 1845 lignes
$nbArticles = (int) $result['nb'];
c est bon j'ai trouve
avec ce code cela fonctionne
<code php><$sql = 'SELECT COUNT(*) AS nb FROM wp_postmeta WHERE (meta_key = "nombre_dablettes")';/code>