J'aimerai faire un moteur de recherche multicritere qui recherche sur une base s [Résolu]

Signaler
Messages postés
5
Date d'inscription
jeudi 9 juin 2005
Statut
Membre
Dernière intervention
30 août 2006
-
Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005
-
Bonjour voila ca fais un moment que j'essaye de faire un moteur de recherche sql mais je n'y arrive pas j'ai essayer d'en modifier un mais cela ne marche pas.
Voila ce que j'ai deja fai

<form name='form1' method='post' action='search.php'>
Recherche avancée >,

----
,

----
Pseudo,
,

----
Ville,
,

----
Departement,
<select NAME='depart' size=1 >

<option> </option>
<option if ($depart=='13') echo 'selected'; >13</option>
<option if ($depart=='14') echo 'selected'; >14</option>
<option if ($depart=='15') echo 'selected'; >15</option>
<option if ($depart=='16') echo 'selected'; >16</option>
</select>,

----
Sexe,
<select NAME='sex' size=1 >
<option></option>
<option if ($sex=='Homme<') echo 'selected'; >Homme</option>
<option if ($sex=='Femme') echo 'selected'; >Femme</option>
</select>,

----
Relation recherchée,
<select NAME='relation' size=1 id='relation'>
<option></option>
<option if ($relation=='Amitié') echo 'selected'; >Amitié</option>
<option if ($relation=='Amitié et +') echo 'selected'; >Amitié et +</option>
<option if ($relation=='Amour') echo 'selected'; >Amour</option>
<option if ($relation=='Tchatche') echo 'selected'; >Tchatche</option>
<option if ($relation=='Sorties') echo 'selected'; >Sorties</option>
<option if ($relation=='Sexe') echo 'selected'; >Sexe</option>
</select>,

----
Célibataire,
<select NAME='celib' size=1 id='celib'>
<option></option>
<option if ($celib=='Oui') echo 'selected'; >Oui</option>
<option if ($celib=='Non') echo 'selected'; >Non</option>
</select>,

----
Fumeur,
<select NAME='fumeur' size=1 id='fumeur'>
<option></option>
<option if ($fumeur=='Oui') echo 'selected'; >Oui</option>
<option if ($fumeur=='Non') echo 'selected'; >Non</option>
<option if ($fumeur=='Occasionnel') echo 'selected'; >Occasionnel</option>
</select>,

----
Cheveux,
<select NAME='cheveux' size=1 >
<option></option>
<option if ($cheveux=='Blonds') echo 'selected'; >Blonds</option>
<option if ($cheveux=='Bruns') echo 'selected'; >Bruns</option>
<option if ($cheveux=='Chatains clair') echo 'selected'; >Chatains clair</option>
<option if ($cheveux=='Chatains foncé') echo 'selected'; >Chatains foncé</option>
<option if ($cheveux=='Roux') echo 'selected'; >Roux</option>
<option if ($cheveux=='Colorés') echo 'selected'; >Colorés</option>
<option if ($cheveux=='Noirs') echo 'selected'; >Noirs</option>
<option if ($cheveux=='Blancs') echo 'selected'; >Blancs</option>
<option if ($cheveux=='Gris') echo 'selected'; >Gris</option>
<option if ($cheveux=='Autre') echo 'selected'; >Autre</option>
</select>,
----
Avec photo,
,

----
Page,
,

----


</form>

Il y a des choses que j'ai comprise comme $sql="SELECT * FROM membres
mais je n'y arrive pas. si quelqu'un pourrai m'aider ca serai gentil
meme si il me donne des piste sans mettre tout les criteres.
La ou ce situent les donnés c dans membres , et il faut que cela cherche dans pseudo , sexe , etc...

Et si quelqu'un peu me donner un tuyau pour faire afficher un certain nombre de resultat par page ca serai super gentil.

Je vous remercie d'avance

3 réponses

Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005

Tu recupere la valeur de tes champs dans search.php avec les commande $pseudo=$_POST['pseudo'];
etc pour tous tes champs...
ensuite tu fais tes requetes
$sql = 'SELECT * FROM membres WHERE pseudo='.$pseudo.' AND ville='.$ville.' ORDER BY pseudo ASC LIMIT 0,10';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
$res = mysql_numrows($req);
while ($data = mysql_fetch_array($req))
{
echo $data['pseudo'].'
';
etc...
}
Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005

Je pense a 2 choses :



<LI>Ajouter des " " sur les valeurs des WHERE ex :
$sql = 'SELECT * FROM membres WHERE pseudo="'.$pseudo.'" AND ville="'.$ville.'" ORDER BY pseudo ASC LIMIT 0,10';</LI>

<LI>Peut etre, mais c'est bcp moins sur, parceque dans la requete $sql on a 'AND ville=' vide... essaye peut etre de faire une condition sur les WHERE par ex :

if ($ville=="") {$ville_req = "";} else {$ville_req = "AND ville='.$ville.'";}
ouif (empty($ville)) {$ville_req "";} else {$ville_req "AND ville='.$ville.'";}
et
$sql = 'SELECT * FROM membres WHERE pseudo='.$pseudo.' '.$ville_req.' ORDER BY pseudo ASC LIMIT 0,10';</LI>
Voila... quelqu'un me contredira peut etre mais en attendant tu peux toujours tester ca....
@+
Messages postés
5
Date d'inscription
jeudi 9 juin 2005
Statut
Membre
Dernière intervention
30 août 2006

Cela ma permi d'avancer merci mais cela ne fonctionne pas cela met :
Erreur SQL !SELECT * FROM fk_membres WHERE pseudo=test1 AND ville= ORDER BY pseudo ASC LIMIT 0,10
Erreur de syntaxe près de 'ORDER BY pseudo ASC LIMIT 0,10' à la ligne 1

j'ai verifié que cela envoyai bien la recherche echo"$pseudo" ;
mais voila ca met une erreur si quelqu'un sais d'ou ca vien merci bcp