Bonjour à tous et à toutes

J'ai fais face il y a peu à un problème méthodologique dans la réalisation d'un script destiné à affiner l'affichage des annonces, sur un site de petites annonces
Il s'agissait de les trier par catégorie, ville etc...J'ai reçu le script suivant comme solution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
include('fonction_pagination.php');
$page = (isset($_GET['page']) ? htmlspecialchars(intval($_GET['page'])): 1);
if($page <= 0) {
  $page = 1;
}
$debut = ($page - 1) *30;
$retour = 'SELECT COUNT(*) AS total FROM ventes WHERE ';
$requete_sql = 'SELECT * FROM ventes WHERE ';
$values = array();
$champs = array('catégorie','ville','demande_offre','part_pro');
if(isset($_POST)){
  foreach ($_POST as $key => $value) {
    if(!empty($value)){
      foreach ($champs as $nom) {
        if($key == $nom){
 
          $requete_sql .= $key.'=\''.$value.'\' AND ';
          $retour .= $key.'=\''.$value.'\' AND ';
        }
      }
    }
  }
  $retour .= '1=1';
  $req3 = $bdd -> query($retour);
  $nombreElementsTotal = $req3 -> fetchcolumn();
$nombreDePages = ceil($nombreElementsTotal/30);
  $requete_sql .= '1 = 1 LIMIT '.$debut.',30';
   echo $requete_sql ;
  $req = $bdd -> query($requete_sql);
}
La présence de la fonction de pagination et d'une requête pour obtenir le nombre total d'annonces n'est pas fortuite. J'y reviens...
Le formulaire de tri contient 4 champs et un bouton validé. Tous les champs sont des SELECT. Ceux-ci sont stocké dans un tableau et utilisé dans le WHERE d'une requête SQL.
Mais voilà, si ce procédé fonctionne bien sur la page d'accueil ie qu'après le clique sur le bouton validé les annonces s'affichent en fonction des valeurs des champs rempli.
Dès qu'on passe à la page suivante, les annonces s'affichent comme si aucun champs n'avait été coché dans le formulaire de tri.
Voici ma fonction de pagination:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
<?php function pagination($current_page, $nb_pages, $link='?page=%d', $around=3, $firstlast=1)
{
  $pagination = '';
  $link = preg_replace('`%([^d])`', '%%$1', $link);
  if ( !preg_match('`(?<!%)%d`', $link) ) $link .= '%d';
  if ( $nb_pages > 1 ) {
 
        // Lien précédent
    if ( $current_page > 1 )
      $pagination .= '<a class="prevnext" href="'.sprintf($link, $current_page-1).'" title="Page précédente">&laquo; Précédent</a>';
    else
      $pagination .= '<span class="prevnext disabled">&laquo; Précédent</span>';
 
        // Lien(s) début
    for ( $i=1 ; $i<=$firstlast ; $i++ ) {
      $pagination .= ' ';
      $pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
    }
 
        // ... après pages début ?
    if ( ($current_page-$around) > $firstlast+1 )
      $pagination .= ' &hellip;';
 
        // On boucle autour de la page courante
    $start = ($current_page-$around)>$firstlast ? $current_page-$around : $firstlast+1;
    $end = ($current_page+$around)<=($nb_pages-$firstlast) ? $current_page+$around : $nb_pages-$firstlast;
    for ( $i=$start ; $i<=$end ; $i++ ) {
      $pagination .= ' ';
      if ( $i==$current_page )
        $pagination .= '<span class="current">'.$i.'</span>';
      else
        $pagination .= '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
    }
 
        // ... avant page nb_pages ?
    if ( ($current_page+$around) < $nb_pages-$firstlast )
      $pagination .= ' &hellip;';
 
        // Lien(s) fin
    $start = $nb_pages-$firstlast+1;
    if( $start <= $firstlast ) $start = $firstlast+1;
    for ( $i=$start ; $i<=$nb_pages ; $i++ ) {
      $pagination .= ' ';
      $pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
    }
 
        // Lien suivant
    if ( $current_page < $nb_pages )
      $pagination .= ' <a class="prevnext" href="'.sprintf($link, ($current_page+1)).'" title="Page suivante">Suivant &raquo;</a>';
    else
      $pagination .= ' <span class="prevnext disabled">Suivant &raquo;</span>';
  }
  if($current_page != 1){
    if( $_GET['page'] > $nb_pages){
    ?>
                 <script type="text/javascript">
                   <!--
                    location="index.php?page=1";
                   //-->
                 </script>
              <?php
  }
}
  return $pagination;
}
?>
Désolé, de n'avoir pu faire plus court.
Merci d'avance à ceux qui voudront m'apporter leur lumière.