Je reviens vers vous avec un nouveau problème.
J'ai fait une page annuaire sur les campings dont les enregistrements sont récupérés depuis une base de données.
Ayant environ 18 enregistrements, j'ai décidé de n'en afficher que 8 par pages et de mettre en place un système de pagination pour aller sur les autres pages.
Jusque là aucun souci!!
Je laisse à la disposition du futur visiteur de pouvoir filtrer les enregistrements par ville et par nombre d'étoile.
Ayant par exemple une dizaine de camping appartenant à la même ville, une fois le filtre de cette ville activé, il faut encore que l'on puisse aller à la page suivante pour visionner les 4 autres campings de cette ville.
Et c'est là que mon problème intervient!!
En effet, je choisi de filtrer les 18 campings en prenant la ville "trucville" qui contient 12 résultats à elle seule.
Je visionne donc 8 résultats pour le filtre "trucville" sur la premiere page et j'ai donc la possibilité de faire "suivant" pour voir les 4 derniers résultats pour cette ville.
Au lieu d'afficher les 4 derniers résultats en appuyant sur "suivant" il me réaffiche la page suivante comme si aucun filtre n'avait été pris en compte cad avec les 18 enregistrements.
D'ailleurs la selection "trucville" dans ma liste de choix par ville disparait et redevient "afficher toutes les villes".
Comment faire pour qu'une fois un filtre activé, que ce soit une ville ou un nombre d'étoile, et si plusieurs pages sont disponibles, la pagination concerne bien les résultats du filtre.
De plus, si je réalise un filtre pour une ville qui ne contient que 2 résultats, on me propose aussi de faire "suivant", preuve que ce dernier ne concernerait que la pagination pour les 18 enregistrements indépendamment des filtres.
Je vous transmet le code de ma pagination:
if (isset($_GET['totalRows_rs_camping'])) {
$totalRows_rs_camping = $_GET['totalRows_rs_camping'];
} else {
$all_rs_camping = mysql_query($query_rs_camping);
$totalRows_rs_camping = mysql_num_rows($all_rs_camping);
}
$totalPages_rs_camping = ceil($totalRows_rs_camping/$maxRows_rs_camping)-1;
$queryString_rs_camping = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_rs_camping") == false &&
stristr($param, "totalRows_rs_camping") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_rs_camping = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_rs_camping = sprintf("&totalRows_rs_camping=%d%s", $totalRows_rs_camping, $queryString_rs_camping);
et le code au niveau des boutons "suivant" "précédent" et autres (généré par dreamweaver8 car je débute en php):
<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center"><?php if ($pageNum_rs_camping > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rs_camping=%d%s", $currentPage, 0, $queryString_rs_camping); ?>">Premier</a>
<?php } // Show if not first page ?> </td>
<td width="31%" align="center"><?php if ($pageNum_rs_camping > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rs_camping=%d%s", $currentPage, max(0, $pageNum_rs_camping - 1), $queryString_rs_camping); ?>">Précédent</a>
<?php } // Show if not first page ?> </td>
<td width="23%" align="center"><?php if ($pageNum_rs_camping < $totalPages_rs_camping) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rs_camping=%d%s", $currentPage, min($totalPages_rs_camping, $pageNum_rs_camping + 1), $queryString_rs_camping); ?>">Suivant</a>
<?php } // Show if not last page ?> </td>
<td width="23%" align="center"><?php if ($pageNum_rs_camping < $totalPages_rs_camping) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rs_camping=%d%s", $currentPage, $totalPages_rs_camping, $queryString_rs_camping); ?>">Dernier</a>
<?php } // Show if not last page ?> </td>
</tr>
</table>
Ma grande question est donc la suivante: Comment faire pour que la pagination prenne en compte l'utilisation des filtres.Est-ce que cela passerait par des conditions if...else!
Si quelqu'un a une solution ou des pistes de réflexion à me soumettre. Merci d'avance pour toute aide apportée