Ben-o | Bonjour, j'affiche les résultats de requetes (des annonces immmobilières) sur plusieurs page grâce à un script trouvé sur le net.
Parallèlement à ça, j'ai ajouté la possibilité de faire un tri (prix, référence...) en transmettant les variables grâce à GET.
Le tri fonctionne bien, mais uniquement sur la première page, dès que j'affiche la page 2, il n'est plus pris en compte (le tri).
Celà vient du fait que pour générer un affichage sur plusieurs pages, c'est également la méthode GET qui est utilisée.
Du coup je ne sais pas comment faire pour passer mes 2 variables en même temps.
Voici le code de ma page:
Code :
- <?php
- /****************** CODE AFFICHAGE SUR PLUSIEURS PAGES **********************/
- //on verifie si la variable $pg est definie, sinon on l'initialise a 1
- if(!isset($_GET['pg'])){
- $pg = 1;
- }
- else{
- $pg = $_GET['pg'];
- }
- // On verifie si la variable qui est cencée etre un numero de page est bien un chiffre, cela evite que gogole pirate avec une injection mysql
- if(!is_numeric($pg)){
- $pg = 1;
- }
- /****************** DEBUT CONNEXION BASE DE DONNEES **********************/
- $host = '****';
- $user = '****';
- $pass = '****';
- $db = '****';
- $link = mysql_connect ($host,$user,$pass) or die ('Erreur :'.mysql_error());
- mysql_select_db($db) or die ('Erreur :'.mysql_error());
- /****************** FIN CONNEXION BASE DE DONNEES **********************/
- /****************** DEBUT DU SCRIPT PERMETTANT DE TRIER LES DONNEES **********************/
- $result_sort = $_GET["sort"];
- if ($result_sort == 'prix') {
- $query_sort = " ORDER BY 'prix'";
- }
- elseif ($result_sort == 'categorie') {
- $query_sort = " ORDER BY 'categorie'";
- }
- elseif ($result_sort == 'secteur') {
- $query_sort = " ORDER BY 'secteur'";
- }
- elseif ($result_sort == 'surf_hab') {
- $query_sort = " ORDER BY 'surf_hab'";
- }
- elseif ($result_sort == 'no_asp') {
- $query_sort = " ORDER BY 'no_asp'";
- }
- /****************** FIN DU SCRIPT PERMETTANT DE TRIER LES DONNEES **********************/
- /****************** SUITE CODE AFFICHAGE SUR PLUSIEURS PAGES **********************/
- // Nombre d'enregstrements à afficher par page
- $enreg_par_pg = 10;
- // Fonction qui affiche les liens vers les autres pages, ainsi que les liens page suivante et page precedente
- function pgs($enreg_par_pg, $pg, $link){
- // Requête qui doit permettre le nombre de résultats total qui va être réparti sur plusieurs pages
- $res = mysql_query("SELECT photo1,
- type,
- secteur,
- categorie,
- no_asp,
- prix,
- cp_internet,
- ville_internet,
- nb_chambres,
- surf_hab,
- surf_terrain
- FROM t_type,
- t_secteur,
- t_maison,
- t_categorie
- WHERE t_maison.idx_type_offre = '1'
- AND t_maison.idx_type_offre = t_type.id_type_offre
- AND t_maison.idx_secteur = t_secteur.id_secteur
- AND t_maison.idx_categorie = t_categorie.id_categorie" ) or die("Erreur MySQL: ".mysql_error($link));
- $nb_enreg = mysql_num_rows($res);
- // On calcule le nombre de pages
- $nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg );
- // Numero de page precedente
- $pp = $pg - 1;
- // Numero de la page suivante
- $ps = $pg + 1;
- // Si l'utilisateur se se trouve pas a la page n°1
- if($pg != 1){
- // On affiche un lien page précedente
- // Si votre script a besoin d'autre(s) variable(s) pour fonctionner n'oubliez pas des les transmettre en ajoutant &var=$var...
- echo "<a href='?pg=$pp'><< page précédente</a>";
- }
- // Définition d'une variable pour la boucle
- $i=1;
- // La syntaxe do...while permet d'effectuer la boucle au moins une fois!
- do {
- // Si $i n'est pas egal au numero de la page sur laquelle se trouve l'utilisateur...
- if($i != $pg){
- // ...on affiche un lien vers cette page
- // Idem: si votre script a besoin d'autre(s) variable(s) pour fonctionner n'oubliez pas des les transmettre en ajoutant &var=$var...
- echo " <a href='?pg=$i'>$i</a>\n";
- }
- else
- {
- // ...sinon on affiche simplement le n° de la page actuelle
- echo " $i ";
- }
- // Incrémentation de la viariable de la boucle
- $i++;
- // On recommence tant que $i n'atteint pas le numero de la derniere page
- }
- while($i <= $nb_pg_rounded);
- // Si l'utilisateur n'est pas à la derniere page...
- if($pg != $nb_pg_rounded){
- // ...on affiche un lien page suivante
- // Idem: si votre script a besoin d'autre(s) variable(s) pour fonctionner n'oubliez pas des les transmettre en ajoutant &var=$var...
- echo " <a href='?pg=$ps'>page suivante >></a>";
- }
- } // Fermeture function pgs
- // Ici on calcule à partir de quel enregistrement il faut afficher $enreg_par_pg résultats
- $limit = $enreg_par_pg*$pg-$enreg_par_pg;
- // Rêquete qui selectione $enreg_par_pg resultats
- $query = "SELECT photo1,
- type,
- secteur,
- categorie,
- no_asp,
- prix,
- cp_internet,
- ville_internet,
- nb_chambres,
- surf_hab,
- surf_terrain
- FROM t_type,
- t_secteur,
- t_maison,
- t_categorie
- WHERE t_maison.idx_type_offre = '1'
- AND t_maison.idx_type_offre = t_type.id_type_offre
- AND t_maison.idx_secteur = t_secteur.id_secteur
- AND t_maison.idx_categorie = t_categorie.id_categorie";
- $query_limit= " LIMIT $limit, $enreg_par_pg";
- /****************** FIN CODE AFFICHAGE SUR PLUSIEURS PAGES **********************/
- /****************** REPRISE DE LA REQUETE POUR EXTRAIRE LE NOMBRE DE RESULTATS RETOURNES **********************/
- $res = mysql_query("SELECT photo1,
- type,
- secteur,
- categorie,
- no_asp,
- prix,
- cp_internet,
- ville_internet,
- nb_chambres,
- surf_hab,
- surf_terrain
- FROM t_type,
- t_secteur,
- t_maison,
- t_categorie
- WHERE t_maison.idx_type_offre = '1'
- AND t_maison.idx_type_offre = t_type.id_type_offre
- AND t_maison.idx_secteur = t_secteur.id_secteur
- AND t_maison.idx_categorie = t_categorie.id_categorie" );
- $nb_enreg = mysql_num_rows($res); // On attribue à $nb_enreg le nombre de résultats retournés
- /****************** FIN REPRISE DE LA REQUETE POUR EXTRAIRE LE NOMBRE DE RESULTATS RETOURNES **********************/
- $query_final = $query.$query_sort.$query_limit;
- //echo $query_final ."<br />"; // Ptite vérif ici
- $reponse = mysql_query($query_final);
- ?>
- <table width="620" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td width="200"><strong><?php echo "$nb_enreg"; ?></strong> appartements trouvées.</td>
- <td width="420" align="right">Trier par: <a href="selection_appartements.php?sort=prix">Prix</a> | <a href="selection_appartements.php?sort=categorie">Catégorie</a> | <a href="selection_appartements.php?sort=secteur">Secteur</a> | <a href="selection_appartements.php?sort=surf_hab">Surface</a> | <a href="selection_appartements.php?sort=no_asp">Référence</a> <td>
- </tr>
- <tr>
- <td width="620" colspan="2"><?php echo "<br>"; pgs($enreg_par_pg, $pg, $link);?></td>
- </tr>
- </table><br />
- <?php
- while ($donnees = mysql_fetch_array($reponse) )
- {
- ?>
- <table width="620" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td width="130">
- <p><a href="detail_maisons.php?id=<?php echo $donnees['no_asp']; ?>"><img src="<?php echo $donnees['photo1']; ?>" height="90%" width="90%" alt="Photo" /></a></p>
- </td>
- <td width="390">
- <span class="intitule_tab_result">Référence:</span> <span class="valeur_tab_result"><?php echo $donnees['no_asp']; ?></span><br />
- <span class="intitule_tab_result">Catégorie:</span> <span class="valeur_tab_result"><?php echo $donnees['categorie']; ?></span><br />
- <span class="intitule_tab_result">Localisation:</span> <span class="valeur_tab_result"><?php echo $donnees['ville_internet']; ?></span><br />
- <span class="intitule_tab_result">Surface habitable:</span> <span class="valeur_tab_result"><?php echo $donnees['surf_hab']; ?> m²</span> <span class="intitule_tab_result">Surface terrain:</span> <span class="valeur_tab_result"><?php echo $donnees['surf_terrain']; ?> m²</span><br />
- <span class="intitule_tab_result">Nombre de chambres:</span> <span class="valeur_tab_result"><?php echo $donnees['nb_chambres']; ?></span>
- </td>
- <td width="100">
- <span class="intitule_tab_result">Prix:</span> <span class="valeur_tab_result"><?php echo $donnees['prix']; ?> </span><br />
- <p><em><font color="#FF8A00"><a href="detail_maisons.php?id=<?php echo $donnees['no_asp']; ?>">+ de détails</a></font></em></p>
- </td>
- </tr>
- </table><br />
- <?php
- }
- //On appele la fonction précédament créée pour afficher les liens vers les autres pages
- echo "<br>";
- pgs($enreg_par_pg, $pg, $link);
- // Déconnexion de MySQL
- mysql_close();
- ?>
|
Merci par avance pour votre aide! |