J'aimerai faire un moteur de recherche multicritere qui recherche sur une base s

Résolu
guigui2mars Messages postés 5 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 août 2006 - 2 sept. 2005 à 05:17
LeTaz Messages postés 22 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 2 septembre 2005 - 5 sept. 2005 à 09:22
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

LeTaz Messages postés 22 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 2 septembre 2005
2 sept. 2005 à 11:20
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...
}
3
LeTaz Messages postés 22 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 2 septembre 2005
5 sept. 2005 à 09:22
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....
@+
3
guigui2mars Messages postés 5 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 août 2006
5 sept. 2005 à 01:30
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
0
Rejoignez-nous