Bonjour,
Depuis plusieurs jours j'essaie de mettre en place l'affichage page par page du résultat d'une requête suite à l'envoi d'un formulaire de recherche (POST).
Je me suis basée sur 2 tutos très différents afin de bien comprendre cette mise en place.
Pour les 2 tutos, tout se passe bien pour la 1ère page mais rien ne s'affiche sur la 2nde.
Après 1000 tests je crois que le problème vient du fait que mes $_POST sont vides à partir de la 2nde page. Peut-être un souci avec les ouvertures/fermetures de mes instructions ?
J'ai vu que beaucoup de personnes avaient ce problème. J'ai étudié le forum, notamment les discussions suivies par jreaux62 et ericd69. Rien à faire, rien ne correspond vraiment. PS : je ne souhaite pas passer par des sessions.
Je me permets, SVP, de vous soumettre mon code afin que vous puissiez JUSTE me dire où se situe le problème.
Ce code mélange PHP/HTML, il est tiré de celui d'A. Hérault, c'est juste pour tester, je le rectifierai ensuite.
Un grand merci par avance si vous aviez le temps, très bonne journée.
Evelyne31
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 <html> <body> <?php //Connexion à la base de données mysql_connect(...); mysql_select_db(...); $messagesParPage=2; //Nous allons afficher 5 messages par page. if (isset($_POST["recherche"]) ) { if (isset($_POST["mot_recherche"]) && isset($_POST["type_recherche"]) ) { $mot_recherche = $_POST["mot_recherche"]; $type_recherche = $_POST["type_recherche"]; if ($_POST['type_recherche'] == 'nomDepartement') { //Une connexion SQL doit être ouverte avant cette ligne... $retour_total=mysql_query ('SELECT count(ID_gite) AS total FROM GITE g JOIN DEPARTEMENT d ON g.ID_departement = d.ID_departement JOIN COMMUNE c ON g.ID_commune = c.ID_commune WHERE nomDepartement = \''.$mot_recherche.'\' ') or die (mysql_error()); //Nous récupérons le contenu de la requête dans $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau. $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total. //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire // La requête sql pour récupérer les messages de la page actuelle. $retour_messages=mysql_query('SELECT numGite, natureGite FROM GITE ORDER BY numGite DESC LIMIT '.$premiereEntree.', '.$messagesParPage.''); while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle { //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design... //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message. echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><strong>Ecrit par : '.stripslashes($donnees_messages['numGite']).'</strong></td> </tr> <tr> <td>'.nl2br(stripslashes($donnees_messages['natureGite'])).'</td> </tr> </table><br /><br />'; //J'ai rajouté des sauts à la ligne pour espacer les messages. } echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$pageActuelle) //Si il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="lith_traitement_form_rech.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>'; } } } ?> </body> </html>
Partager