Bonsoir,

J'arrive bientôt (enfin) à la fin de mon site que je n'aurais jamais réalisé sans votre aide. Il me reste un tout petit truc à faire, pas si petit que ça : Une recherche :

J'ai donc crée le formulaire de Recherche

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
<form method="post" action="traitement_recherche.php">
   <p class="titre">Sélectionner les activités de votre choix</p>
 
<?php
$reponse = $bdd->query('SELECT * FROM activite'); 
while ($donnees = $reponse->fetch())
{
?>
    <input type="checkbox" name="ract[]" id="ract" value="<?php echo $donnees['nom_act'];?>"/> <label for="ract"><?php echo $donnees['nom_act'];?></label><br />
   </p>
 
<?php
}
$reponse->closeCursor();
?>
 
<p class="titre"><label for="optliv">Souhaitez-vous vous faire livrer ?</label></p>
<select name="optliv" id="optliv" selected="v">
<p><option value="v">--</option></p>
<p><option value="oui">Oui</option></p>
<p><option value="non">Non</option></p>
</select>    
 
<p class="titre"><label for "optemp">Souhaitez-vous prendre un plat à emporter ?</label></p>
<select name="optemp" id="optempt selected="v">
<p><option value="v">--</option></p>
<p><option value="oui">Oui</option></p>
<p><option value="non">Non</option></p>
</select>
	<p><input class="submit" type="submit" value="Valider ma recherche" /></p>
 
</form>
Voici le résultat côté PHP avec un petit ECHO pour vérifier que les valeurs sont bien renvoyées et ça fonctionne :

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
 
<h3>Voici le résultat de votre recherche :</h3>
<?php
 
//traitement des variables retournées par le formulaire recherche
 
	//Traitement des cases à cochées
	if(isset($_POST['ract']))
	{ //sera vrai si au moins un moins un checkbox est coché
 
		foreach($_POST['ract'] as $act)
		{
		echo $act; 
		}
	}
 
//traitement des données par liste
echo $_POST['optliv'];
echo $_POST['optemp'];
J'étais très content de moi ! Surtout pour afficher les résultats Chexbox.

Mais... viens la requête et là... Par exemple, ici, je souhaiterai qu'il m'affiche uniquement les restaurants avec les activités sélectionnées et... ERROR !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
$reponse = $bdd->query('SELECT * FROM restos WHERE spe1 LIKE '.$act.'');
 
while ($donnees = $reponse->fetch())
{
?>
<p>Nom du restaurant : <?php echo $donnees['nom']; ?></p>
<?php
}
?>
L'erreur me dit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\DjibRestos\traitement_recherche.php on line 63
Donc si j'ai bien traduit, il me dit que j'appelle une partie de la fonction qui n'est pas un objet ? ! ?

Si j'ai bien compris la traduction, sachez que je n'ai pas compris l'erreur ! Comment doit-on rendre un non objet en objet ?

Merci de vos explications