Bonjour,
Au début du code je récupère les données de mon formulaire, je me connecte biensur à la BDD, je trie, ensuite j'affiche les résultats mais cela marche seulement pour la première page.
Quelqu'un pourrait il m'expliquer clairement comment modifier mon code de pagination pour pouvoir récupérer mes résultats en page 2, 3 ,4 etc...
Je sais qu'il faut que je réinsère mes $GET dans la pagination mais je ne sais pas comment faire et cela fait 3 jours que je galère.
Merci infiniment
<?php
$agemin = isset($_POST['agemin']) ? $_POST['agemin'] : ( !empty($_GET['agemin']) ? $_GET['agemin'] : '') ; // récupération des données
$agemax = isset($_POST['agemax']) ? $_POST['agemax'] : ( !empty($_GET['agemax']) ? $_GET['agemax'] : '') ; // récupération des données
$taimin = isset($_POST['taimin']) ? $_POST['taimin'] : ( !empty($_GET['taimin']) ? $_GET['taimin'] : '') ; // récupération des données
$taimax = isset($_POST['taimax']) ? $_POST['taimax'] : ( !empty($_GET['taimax']) ? $_GET['taimax'] : '') ; // récupération des données
$poimin = isset($_POST['poimin']) ? $_POST['poimin'] : ( !empty($_GET['poimin']) ? $_GET['poimin'] : '') ; // récupération des données
$poimax = isset($_POST['poimax']) ? $_POST['poimax'] : ( !empty($_GET['poimax']) ? $_GET['poimax'] : '') ; // récupération des données
$enfant = isset($_POST['enfant']) ? $_POST['enfant'] : ( !empty($_GET['enfant']) ? $_GET['enfant'] : '') ; // récupération des données
$statut = isset($_POST['statut']) ? $_POST['statut'] : ( !empty($_GET['statut']) ? $_GET['statut'] : '') ; // récupération des données
$cheveux = isset($_POST['cheveux']) ? $_POST['cheveux'] : ( !empty($_GET['cheveux']) ? $_GET['cheveux'] : '') ; // récupération des données
$yeux = isset($_POST['yeux']) ? $_POST['yeux'] : ( !empty($_GET['yeux']) ? $_GET['yeux'] : '') ; // récupération des données
$ville = isset($_POST['ville']) ? $_POST['ville'] : ( !empty($_GET['ville']) ? $_GET['ville'] : '') ; // récupération des données
?>
<?php
$perPage = 12; // resultats max par page
$req = $db->query("SELECT COUNT(*) AS total FROM profils WHERE enfant = '$enfant' AND age BETWEEN (curdate() - interval '$agemax' year) AND (curdate() - interval '$agemin' year) AND taille BETWEEN '$taimin' AND '$taimax' AND poids BETWEEN '$poimin' AND '$poimax' AND statut = '$statut' AND cheveux = '$cheveux' AND yeux = '$yeux' AND ville = '$ville'");
$result = $req->fetch();
$total = $result['total'];?>
<div id="box-right-catalogue">
<?php $nbPage = ceil($total/$perPage);
if(isset($_GET['page']) && !empty($_GET['page']) && ctype_digit($_GET['page']) == 1){
if ($_GET['page'] > $nbPage) {
$page = $nbPage;
}else{
$page = $_GET['page'];
}
}else{
$page = 1;
}
$first = ($page-1)*$perPage;
$reponse = $db->query("SELECT * FROM profils WHERE enfant = '$enfant' AND age BETWEEN (curdate() - interval '$agemax' year) AND (curdate() - interval '$agemin' year) AND taille BETWEEN '$taimin' AND '$taimax' AND poids BETWEEN '$poimin' AND '$poimax' AND statut = '$statut' AND cheveux = '$cheveux' AND yeux = '$yeux' AND ville = '$ville' ORDER BY age DESC LIMIT $first, $perPage" );
while ($donnees = $reponse->fetch())
{
?>
<div class="box-cadre-catalogue">
<img src="profils/<?php echo $donnees['photo']; ?>" class="photo1-catalogue" width="219" height="330">
<?php echo "<a href='".$donnees['lien']."'>"; ?> <img src="images/1cadre.png"class="cadre1-catalogue"></a>
<p class="prenom-catalogue"><?php echo $donnees['prenom']; ?>
<?php echo ageCalculator($donnees['age']);?> ans</p>
</div>
<?php } ?>
<!-- *********** PAGINATION *************************** PAGINATION **************-->
<div class="numeros-pages">
<ul id="pagination">
<?php
if ($page > 1):
?><li><a href="?page=<?php echo $page - 1; ?>">Précédent</a></li> <?php
endif;
for ($i = 1; $i <= $nbPage; $i++):
if($i == $page){
?><li class="active"><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li>
<?php
}
else{
?>
<li><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li><?php }
endfor;
if ($page < $nbPage):
?> <li><a href="?page=<?php echo $page + 1 ; ?>">Suivant</a></li><?php
endif;
?>
</ul>
</div>
</div>
</div>
Tu pourrai faire passer tous te arguments dans ton url comme ceci :
page.php?p=2&age=17&statut=truc&agemax=55&poimin=55
Mais je ne pense pas que se soit la solution. Sinon, tu peux stocker toutes ces variables dans les cookies (ou autre) et ainsi les conserver au fil des pages
Merci benjamin
ce serait une bonne idée de les stocker dans les cookies, le problème c'est que je ne sais pas comment faire...
Cherches sur Google , tu trouvera facilement :)
Un cookie c'est une "supervariable" à laquelle tu attribut une clé, une valeur, et une durée de vie
Très intéressant, jai compris le concept mais seulement pour afficher un résultat avec un echo. les exemple monté retsent simple. Si je choisi la methode session, comment introduire $_session dans ma pagination?