Bonjour,

je cherche à faire un affichage par page page des résultats transmis via un formulaire comprenant 3 champs.
J'ai construit le code avec une requête simple du type SELECT * FROMX WHERE et tout semble ok, les résultats s'affichent page par page.
J'ai développé ensuite le code pour intégrer une requête plus complexe.
A partir de là, les résultats plantent complétement : j'ai bien des résultats, ils s'affichent page par page, mais ils ne correspondent pas aux critères que j'ai demandés.
Je vous passe le code de la barre de navigation, ce n'est pas lui qui pose problème.
Voici le code pour l'affichage des résultats
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
 
 
<?php
if
(
(isset($_POST['public'])&&($_POST['public'])=="#") 
&&
(isset($_POST['lieu'])&&($_POST['lieu'])=="#")
&&
(isset($_POST['activite'])&&($_POST['activite'])=="#") 
)
{
$erreur = 'merci de remplir au moins un des champs' ;
header('Location: guide.php');
exit();
}
else
{
// on se connecte à la base 
$base = mysql_connect ('*', '*', '*');
mysql_select_db ('*', $base);
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql  =  ' SELECT * FROM aide_ac,aide_st WHERE aide_ac.structure = aide_st.s_clef '; 
 
if (isset($_POST['public'])&&($_POST['public'])!="#") 
{ 
 $sql .= ' AND  public = "'.$_POST['public'].'"'; 
} 
 
if (isset($_POST['lieu'])&&($_POST['lieu'])!="#") 
{ 
    $sql .= ' AND  lieu = "'.$_POST['lieu'].'"'; 
} 
 
if (isset($_POST['activite'])&&($_POST['activite'])!="#") 
{ 
   $sql .= ' AND  activite = "'.$_POST['activite'].'"'; 
}
 
$sql .= ' ORDER BY activite';
 
// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);
 
// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) 
{
    echo 'Aucune réponse trouvée';
}
 
else 
{
     echo '<table><tr><td>Titre de colonne</td><td>Contenu</td></tr>';
    // sinon, on regarde si la variable $debut  n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
    if (!isset($_GET['debut'])) $_GET['debut'] = 0;
    $nb_affichage_par_page = 1;
 
    // Préparation de la requête avec LIMIT
   $sql  =  ' SELECT * FROM aide_ac,aide_st WHERE aide_ac.structure = aide_st.s_clef '; 
 
	if (isset($_POST['public'])&&($_POST['public'])!="#") 
	{ 
 	$sql .= ' AND  public = "'.$_POST['public'].'"'; 
	} 
	if (isset($_POST['lieu'])&&($_POST['lieu'])!="#") 
	{ 
  	$sql .= ' AND  lieu = "'.$_POST['lieu'].'"'; 
	} 
 
	if (isset($_POST['activite'])&&($_POST['activite'])!="#") 
	{ 
  	$sql .= ' AND  activite = "'.$_POST['activite'].'"'; 
	}
 
	$sql .=  ' ORDER BY activite ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
 
    // on exécute la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
    // on scanne les tuples un par un 
    while ($data = mysql_fetch_array($req)) 
		{
        // on affiches les résultats dans la table
        echo '<tr><td>Activité </td><td>' , stripslashes(htmlentities(trim($data['activite']))) , '</td></tr>';
    	echo '<tr><td>Lieu</td><td>' , stripslashes(htmlentities(trim($data['lieu']))) , '</td></tr>';
		echo '<tr><td>Public</td><td>' , stripslashes(htmlentities(trim($data['public']))) , '</td></tr>';
		}
}
 
    // on libère l'espace mémoire alloué pour cette requête 
 
    echo '</table><br />';
 
    // affichage de la barre de navigation
    echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
}
// on libère l'espace mémoire alloué pour cette requête 
mysql_free_result ($resultat); 
// on ferme la connexion à la base de données. 
mysql_close (); 
 
?>

ca a vraiment l'air d'être lié au type de requête, mais je suis coincée.

Merci à ceux qui pourront m'apporter leur aide

Caroline