Pagination automatique

Fermé
Busima - Modifié par Busima le 11/05/2016 à 02:15
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 11 mai 2016 à 09:16
Bonjour,
un soucis avec mon code de pagination automatique sur une de mes pages. En effet la requête d'affichage des données se passe, elle affiche même les liens des numéros de pages (page 1, 2, 3, 4...) mais lorsque je clique sur un numero pour voir la page suivante appart la page 1, il y'a une page vide qui s'affiche ne présantant même pas d'erreur. Cependant la page n'affiche absolument pas le contenu appart l'entete, la bannière annimée et la partie où doit être affiché le contenu(corps de la page), mais pas le contenu ne s'affiche pas.

Voici la page du formulaire à partir de laquelle je fais mes recherches à travers des checkbox:

<code html><! DOCTYPE html>
<html>
<head>
<title>RECHERCHER</title>
</head>
<body>
<div background-color="blue">
<h1 align="center">Rechercher</h1>
<form method="post" action="resultat_rech.php">
Location<input type="checkbox" name="location" value="location">
Vente<input type="checkbox" name="vente" value="vente">

<input type="submit" name="valider" value="Valider"/>
</form>
</div>
</body>
</html>

</code>

Ensuite voici le code de la page de traitement qui doit afficher le resultat de la recherche avec pagination automatique:

<code php>
<code php><!DOCTYPE html>
<html>
<head>
<title>recherche d'immobiliers</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="sogim.css" />
<link rel="stylesheet" href="art_special.css" />
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="css/bootstrap-theme.min.css"/>
</head>

<body>
<div id="bloc_page">
<?php
include('entete.php');
?>
<section class="row">
<article class="article_special" align="center" class="col-md-12 col-sm-12 col-xm-12">
<?php
if((isset($_POST['location'])) AND (isset($_POST['valider'])))
{
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$page_offset = ($page - 1) * 5;
$total ='';
$pagination ='';
//On se connecte
//connectbdsogim();
try
{
//Ma connexion à mysql
$bdd = new PDO ('mysql:host=localhost;dbname=bdsogim', 'root', '');
}
catch(Exception $e)
{
//S'il ya erreur, un message d'erreur doit s'afficher
die('Erreur:'.$e->get_Message());
}
//On prépare la commande sql de selection
$total_element = $bdd -> query('SELECT * from categories WHERE statut="En location"');
$total = $total_element ->rowCount();
$pagination = $total/5;
$req = $bdd ->query("select * from categories WHERE statut='En location' ORDER BY id_categories DESC LIMIT $page_offset, 5 ");
echo' <h2><u>Nos immobiliers en location</u></h2>';
while($donnees = $req -> fetch())
{
echo '<table border="1px"; width:400px; height:150px; color="#999";>
<tr>
<td> Numero: '.$donnees['id_categories'].'</br>Type: '.$donnees['type'].'</br>Model: '.$donnees['model'].'</br>Dimension: '.$donnees['dimension'].'</br>Prix: '.$donnees['prix'].'</br>Statut: '.$donnees['statut'].'</br>Commune: '.$donnees['commune'].'</br>Quartier: '.$donnees['quartier'].'</br>Référence: '.$donnees['localisation'].' '.
'</td>
<td><a href="operation.php?id='.$donnees['id_categories'].'"><img src="images/photos/'.$donnees['photo'].'"style=" width:220px; height:150px; color="#0000"; /></a></br></br>
</td>
</tr></table>';
echo '<a href="operation.php?id='.$donnees['id_categories'].'"> <img src="images/Reservation02s.GIF" /><strong style=" color="red"; font-color="red";/> </strong></a>';
}

echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$pagination; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$page) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="res_rech.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
$req->closeCursor();
}

?>

<?php
if (isset($_POST['valider']) AND (isset($_POST['vente'])))
{
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$page_offset = ($page - 1) * 5;
$total ='';
$pagination ='';
//On se connecte
//connectbdsogim();
try
{
//Ma connexion à mysql
$bdd = new PDO ('mysql:host=localhost;dbname=bdsogim', 'root', '');
}
catch(Exception $e)
{
//S'il ya erreur, un message d'erreur doit s'afficher
die('Erreur:'.$e->get_Message());
}
//On prépare la commande sql de selection
$total_element = $bdd -> query('SELECT * from categories WHERE statut="En vente"');
$total = $total_element ->rowCount();
$pagination = $total/5;
$req = $bdd ->query("select * from categories WHERE statut='En vente' ORDER BY id_categories DESC LIMIT $page_offset, 5 ");
echo' <h2><u>Nos immobiliers en vente</u></h2>';
while($donnees = $req -> fetch())
{
echo '<table border="1px"; width:400px; height:150px; color="#999";>
<tr>
<td> Numero: '.$donnees['id_categories'].'</br>Type: '.$donnees['type'].'</br>Model: '.$donnees['model'].'</br>Dimension: '.$donnees['dimension'].'</br>Prix: '.$donnees['prix'].'</br>Statut: '.$donnees['statut'].'</br>Commune: '.$donnees['commune'].'</br>Quartier: '.$donnees['quartier'].'</br>Référence: '.$donnees['localisation'].' '.
'</td>
<td><a href="operation.php?id='.$donnees['id_categories'].'"><img src="images/photos/'.$donnees['photo'].'"style=" width:220px; height:150px; color="#0000"; /></a></br></br>
</td>
</tr></table>';
echo '<a href="operation.php?id='.$donnees['id_categories'].'"> <img src="images/Reservation02s.GIF" /><strong style=" color="red"; font-color="red";/> </strong></a>';
}
$req->closeCursor();
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$pagination; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$page) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="res_rech.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
}
?>
</article>
</section>
</div>
<footer>
<?php include('new_footer.php'); ?>
</footer>
<script src="js/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
</code>
</code>

Comment faire pour la pagination soit effective et qu'elle marche? Merci encore pour tout.

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
11 mai 2016 à 09:16
Salut,

Le problème vient surement du fait que ton contenu ne s'affiche que lorsque les paramètres post sont définies ce qui n'est pas le cas lorsqu'on clique sur un lien de la pagination.

En effet en validant le formulaire de recherche la page est chargée avec les paramètres post ($_POST['valider'], etc...) et le contenu s'affiche correctement. En cliquant sur un lien de la pagination, la page est alors chargée sans les paramètres post et le contenu ne s'affiche donc pas.

Au moins deux solutions pour résoudre le problème :
1. (non recommandé) Transmettre les paramètres de recherche via les liens de pagination (en get via l'url ou en post en utilisant un formulaire par exemple). Cette solution n'est pas forcément idéal car le fait de transmettre les paramètres à chaque chargement de page n'est pas optimisé.
2. (recommandé) Enregistrer les paramètres post en session et utiliser les paramètres en session pour afficher le contenu. Ainsi même si l'utilisateur change de page via la pagination, les critères de recherche seront conservés dans la session.

Bonne journée,
0