Ma pagination ne fonctionne pas
Résolu
flexi2202
Messages postés
4141
Statut
Membre
-
flexi2202 Messages postés 4141 Statut Membre -
flexi2202 Messages postés 4141 Statut Membre -
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
- Pagination google doc a partir de la page 3 ✓ - Forum Bureautique
- Pagination word - Guide
- Le fichier de pagination est insuffisant pour terminer cette opération - Forum PC portable
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>