Bonjour,
j'ai un cas que personne n'arrive à résoudre...Voilà:
j'ai un formulaire d'où part une requête.j'aimerais que cette requête soit suivi sur le code suivant de page en page. hors elle n'est pas "tenue".les pages suivantes n'affichent plus la demande mais le premier enregistrement de la base.comment faire pour qu'elle soit renouvellée sur toute les pages,sachant que lorsque je renseigne le select de maniere fixe et determiné,ça fonctionne,les bons resultats s'affichent de page en page...Je suis en local avec wamp php5...merci beaucoup!

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
 
<html>
<head>
<title>Script de pagination automatique en php</title>
<!-- Styles CSS -->
<style type="text/css">
html {font-size: 1.4em;}
.pagination a {color: black;}
.pagination a:hover {color: red; text-decoration: none;}
.pagination a:visited {color: red; text-decoration: none;}
</style>
</head>
<body>
<?php
//==============================================================================
// Configuration à modifier avec vos propres paramètres
//==============================================================================
 
// Connexion à la base de données
$host = "localhost";
$user = "root";
$pass = "";
$data = "youresto"; // Nommer ici la base de données
$connect = mysql_connect($host, $user, $pass)
  or die("Connexion au serveur impossible !");
$db = mysql_select_db($data, $connect)
  or die("Sélection de la base impossible !");
 
$recherche = $_POST['recherche'];
// Paramétrage de la requête (ne pas modifier le nom des variable)
$table = "jos_restaurante"; // Table à sélectionner dans la base
$champ = "city"; // Champ de la table à afficher pour tester ce script
$champ2 = "title";
$sql = "SELECT city,title FROM $table WHERE $champ LIKE '".'$recherche'."%'"; // Requête initiale (à compléter si nécessaire)
 
$parpage = 20; // Nombre d'enregistrements par page à afficher
 
//==============================================================================
// Déclaration et initialisation des variables (ici ne rien modifier)
//==============================================================================
 
// On définit le suffixe du lien url qui affichera les pages
// $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
$url = $_SERVER['PHP_SELF']."?limit=";
 
$total = mysql_query($sql); // Résultat total de la requête $sql
$nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
 
// On calcule le nombre de pages à afficher en arrondissant
// le résultat au nombre supérieur grâce à la fonction ceil()
$nbpages = ceil($nblignes/$parpage);
 
//==============================================================================
// Exemple d'affichage HTML
//==============================================================================
 
// On teste en affichant la valeur des variables (facultatif)
echo "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
echo "<br />\n"."On affiche <b>".$parpage." enregistrements</b> par page, ";
echo "soit un total de <b>".$nbpages." pages</b>.</p>\n";
 
// Si une valeur 'limit' est passée par url, on vérifie la validité de
// cette valeur par mesure de sécurité avec la fonction validlimit()
// cette fonction retourne automatiquement le résultat de la requête
$result = validlimit($nblignes,$parpage,$sql);
 
// On affiche le résultat de la requête
// On crée donc ici son propre tableau pour lequel on souhaite une pagination
while ($ligne = mysql_fetch_array($result)) {
  echo $ligne[$champ]."\n",$ligne[$champ2]."<br />\n";
}
 
// Menu de pagination que l'on place après la requête
echo "<div class='pagination'>";
echo pagination($url,$parpage,$nblignes,$nbpages);
echo "</div>";
 
mysql_free_result($result); // Libère le résultat de la mémoire
 
//==============================================================================
// Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'
//==============================================================================
 
function pagination($url,$parpage,$nblignes,$nbpages)
{
  // On crée le code html pour la pagination
  $html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
  // On vérifie que l'on a plus d'une page à afficher
  if ($nbpages > 1) {
    // On boucle sur les numéros de pages à afficher
    for ($i = 0 ; $i < $nbpages ; ++$i) {
      $limit = $i * $parpage; // On calcule le début de la valeur 'limit'
      $limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
      // On affiche les liens des numéros de pages
      $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
    }
  }
  // Si l'on a qu'une page on affiche rien
  else {
    $html .= "";
  }
  $html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
  // On retourne le code html
  return $html;
}
function validlimit($nblignes,$parpage,$sql)
{
  // On vérifie l'existence de la variable $_GET['limit']
  // $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
  if (isset($_GET['limit'])) { 
    $pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
    $debut = $pointer[0];
    $fin = $pointer[1];
    // On vérifie la conformité de la variable $_GET['limit']
    if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
      // Si $_GET['limit'] est valide on lance la requête pour afficher la page
      $limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
      $sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
      $result = mysql_query($sql); // Nouveau résultat de la requête
    }
    // Sinon on affiche la première page
    else {
      $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
      $result = mysql_query($sql); // Nouveau résultat de la requête
    }
  }
  // Si la valeur 'limit' n'est pas connue, on affiche la première page
  else {
    $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
    $result = mysql_query($sql); // Nouveau résultat de la requête
  }
  // On retourne le résultat de la requête
  return $result;
}
function precedent($url,$parpage,$nblignes)
{
  // On vérifie qu'il y a au moins 2 pages à afficher
  if ($nblignes > $parpage) {
    // On vérifie l'existence de la variable $_GET['limit']
    if (isset($_GET['limit'])) {
      // On scinde la variable 'limit' en utilisant la virgule comme séparateur
      $pointer = split('[,]', $_GET['limit']);
      // On récupère le nombre avant la virgule et on soustrait la valeur $parpage
      $pointer = $pointer[0]-$parpage;
      // Si on atteint la première page, pas besoin de lien 'Précédent'
      if ($pointer < 0) {
        $precedent = "";
      }
      // Sinon on affiche le lien avec l'url de la page précédente
      else {
        $limit = "$pointer,$parpage";
        $precedent = "<a href=".$url.$limit."><</a> | ";
      }
    }
    else {
      $precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
    }
  }
  else {
  $precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
  }
  return $precedent;
}
function suivant($url,$parpage,$nblignes)
{
  // On vérifie qu'il y a au moins 2 pages à afficher
  if ($nblignes > $parpage) {
    // On vérifie l'existence de la variable $_GET['limit']
    if (isset($_GET['limit'])) {
      // On scinde la variable 'limit' en utilisant la virgule comme séparateur
      $pointer = split('[,]', $_GET['limit']);
      // On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
      $pointer = $pointer[0] + $parpage;
      // Si on atteint la dernière page, pas besoin de lien 'Suivant'
      if ($pointer >= $nblignes) {
        $suivant = "";
      }
      // Sinon on affiche le lien avec l'url de la page suivante
      else {
        $limit = "$pointer,$parpage";
        $suivant = "<a class='pagination' href=".$url.$limit.">></a>";
      }
    }
    // Si pas de valeur 'limit' on affiche le lien de la deuxième page
    if (@$_GET['limit']== false) {
      $suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
    }
  }
  else {
  $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
  }
  return $suivant;
}
// Fin du script
?>
</body>
</html>