Module recherche
Résolu/Fermé
leototo75
Messages postés
14
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 août 2009
-
30 juil. 2009 à 13:56
leototo75 Messages postés 14 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 17 août 2009 - 17 août 2009 à 15:31
leototo75 Messages postés 14 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 17 août 2009 - 17 août 2009 à 15:31
A voir également:
- Module recherche
- Recherche musique - Guide
- Google recherche par image - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Hkcmd module ✓ - Forum Virus
- Recherche adresse - Guide
12 réponses
M@dien
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
30 juil. 2009 à 14:01
30 juil. 2009 à 14:01
Bonjour,
Je n'arrive pas à bien cerner ton module de recherche.
Que doit-il chercher???
Ce que je veux dire, c'est doit-il chercher des mots dans des pages web de ton site, ou bien chercher des données dans une base de données?
De quoi serait constitué ton formulaire?
Je n'arrive pas à bien cerner ton module de recherche.
Que doit-il chercher???
Ce que je veux dire, c'est doit-il chercher des mots dans des pages web de ton site, ou bien chercher des données dans une base de données?
De quoi serait constitué ton formulaire?
leototo75
Messages postés
14
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 août 2009
30 juil. 2009 à 14:05
30 juil. 2009 à 14:05
Exacte désolé j'ai oublier de préciser vraiment désolé
Alors ce formulaire doit rechercher des infos dans une base de données, c'est un module de recherche de contact .Et pour l'instant je commence a avoir enormement de if ^^.Donc je dois etre sur al mauvaise route.
<form method="get" action="resrecherche.php">
Sexe (Obligatoire):
<INPUT type="checkbox" name="Sexe[]" value="Homme"> Homme
<INPUT type="checkbox" name="Sexe[]" value="Femme"> Femme<br><br>
Origine (Obligatoire): <br><br>
<div class="taborigine">
<INPUT type="checkbox" name="origines[]" value="toto"> 1
<INPUT type="checkbox" name="origines[]" value="titi"> 2
<INPUT type="checkbox" name="origines[]" value="tutu"> 3<br><br>
<INPUT type="checkbox" name="origines[]" value="lolloo"> 4
</div>
<br><br>
Email <input type="text" name="email" /><br><br>
Tel <input type="text" name="tel" /><br><br>
Départements séparés par / (rien si toute la France)<input type="text" name="departement" /><br><br>
age entre <input type="text" name="agemin" /> et <input type="text" name="agemax" /><br><br>
Date entree <input type="text" name="DateEnt" /><br><br>
Date fraicheur<input type="text" name="DateFrai" /><br><br>
Client payant?? <br>
<INPUT type="checkbox" name="ClientPWap" value="ClientPWap"> Client Payant Wap
<INPUT type="checkbox" name="ClientPNet" value="ClientPTel"> Client Payant tel
<INPUT type="checkbox" name="ClientPWeb" value="ClientPWeb"> Client Payant Web<br><br>
Abonné a quelle news?? <br>
<INPUT type="checkbox" name="abonnenewent" value="abonnenewent"> abonné à notre newsletter
<INPUT type="checkbox" name="abonnenewpart" value="abonnenewpart"> abonné à la newsletter partenaire<br><br>
<input type="submit" value="valider">
</form>
Alors ce formulaire doit rechercher des infos dans une base de données, c'est un module de recherche de contact .Et pour l'instant je commence a avoir enormement de if ^^.Donc je dois etre sur al mauvaise route.
<form method="get" action="resrecherche.php">
Sexe (Obligatoire):
<INPUT type="checkbox" name="Sexe[]" value="Homme"> Homme
<INPUT type="checkbox" name="Sexe[]" value="Femme"> Femme<br><br>
Origine (Obligatoire): <br><br>
<div class="taborigine">
<INPUT type="checkbox" name="origines[]" value="toto"> 1
<INPUT type="checkbox" name="origines[]" value="titi"> 2
<INPUT type="checkbox" name="origines[]" value="tutu"> 3<br><br>
<INPUT type="checkbox" name="origines[]" value="lolloo"> 4
</div>
<br><br>
Email <input type="text" name="email" /><br><br>
Tel <input type="text" name="tel" /><br><br>
Départements séparés par / (rien si toute la France)<input type="text" name="departement" /><br><br>
age entre <input type="text" name="agemin" /> et <input type="text" name="agemax" /><br><br>
Date entree <input type="text" name="DateEnt" /><br><br>
Date fraicheur<input type="text" name="DateFrai" /><br><br>
Client payant?? <br>
<INPUT type="checkbox" name="ClientPWap" value="ClientPWap"> Client Payant Wap
<INPUT type="checkbox" name="ClientPNet" value="ClientPTel"> Client Payant tel
<INPUT type="checkbox" name="ClientPWeb" value="ClientPWeb"> Client Payant Web<br><br>
Abonné a quelle news?? <br>
<INPUT type="checkbox" name="abonnenewent" value="abonnenewent"> abonné à notre newsletter
<INPUT type="checkbox" name="abonnenewpart" value="abonnenewpart"> abonné à la newsletter partenaire<br><br>
<input type="submit" value="valider">
</form>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 juil. 2009 à 14:16
30 juil. 2009 à 14:16
je dois faire un module de recherche en php/mysql, c'est à dire un formulaire qui selon les champs remplis me renverras les données souhaitée.
oui tu es sur la bonne voie
mais si je comprend bien tu coinces au niveau de la recherche en fonction des champs remplis : un ou plusieurs ?
une piste:
tu nomme tes champ du formulaire avec des []
<input type="text" name="mot_recherche['mot1']" >mot1
<input type="text" name="mot_recherche['mot2']" >mot2
etc..
tu recupereras ainsi tes mots dans un array $_POST['mot_recherche']
et tu construit ta requette en parcourant l'array et en concatenant en tenant compte du premier pour mettre le AND ou pas
oui tu es sur la bonne voie
mais si je comprend bien tu coinces au niveau de la recherche en fonction des champs remplis : un ou plusieurs ?
une piste:
tu nomme tes champ du formulaire avec des []
<input type="text" name="mot_recherche['mot1']" >mot1
<input type="text" name="mot_recherche['mot2']" >mot2
etc..
tu recupereras ainsi tes mots dans un array $_POST['mot_recherche']
et tu construit ta requette en parcourant l'array et en concatenant en tenant compte du premier pour mettre le AND ou pas
leototo75
Messages postés
14
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 août 2009
30 juil. 2009 à 14:23
30 juil. 2009 à 14:23
Merci pour cette réponse rapide.
Je coince sur le fait que certains champs ne soient pas obligatoire et donc si la personne ne la remplis pas , ma requete est donc changée.
Je ne sais aps si je peux faire ce que tu me dit soit je n'ai surment aps compris .Car par exemple pour le sexe ou l'origine ce sont des checkbox et je peux donc en cocher plusieurs et ces deux champs sont obligatoires.
Enfin je ne vois aps comment préparer mes requetes à l'avance.
Pour ton cas aurais tu un exemple s'il te plait.
Je coince sur le fait que certains champs ne soient pas obligatoire et donc si la personne ne la remplis pas , ma requete est donc changée.
Je ne sais aps si je peux faire ce que tu me dit soit je n'ai surment aps compris .Car par exemple pour le sexe ou l'origine ce sont des checkbox et je peux donc en cocher plusieurs et ces deux champs sont obligatoires.
Enfin je ne vois aps comment préparer mes requetes à l'avance.
Pour ton cas aurais tu un exemple s'il te plait.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 juil. 2009 à 14:27
30 juil. 2009 à 14:27
tiens j'ai retrouvé un exemple un peu différent de ce que je t'avais dit mais ça revient au même
La requette est construit automatiquement en fonction des champs remplis ou cochés
La requette est construit automatiquement en fonction des champs remplis ou cochés
<?php //moteur de recherche multicriteres (5) //ATTENTION les noms des select et les noms de champs de la BDD doivent etre IDENTIQUES //definition des noms des champs $nom_champ1="numero"; $nom_champ2="marque"; $nom_champ3="serie"; $nom_champ4="carburant"; $nom_champ5="couleur"; $choix=array(); //recup des champs postes et mise dans un array $choix if(isset($_POST[$nom_champ1]) AND $_POST[$nom_champ1]!= -1){$choix[$nom_champ1]=$_POST[$nom_champ1];} if(isset($_POST[$nom_champ2]) AND $_POST[$nom_champ2]!= -1){$choix[$nom_champ2]=$_POST[$nom_champ2];} if(isset($_POST[$nom_champ3]) AND $_POST[$nom_champ3]!= -1){$choix[$nom_champ3]=$_POST[$nom_champ3];} if(isset($_POST[$nom_champ4]) AND $_POST[$nom_champ4]!= -1){$choix[$nom_champ4]=$_POST[$nom_champ4];} if(isset($_POST[$nom_champ5]) AND $_POST[$nom_champ5]!= -1){$choix[$nom_champ5]=$_POST[$nom_champ5];} if(isset($_POST['rechercher'])){ if(sizeof($choix) == 0){ echo "<font color='red'>Vous devez choisir au moins un critere !</font>"; }elseif(sizeof($choix) > 0){ //construction de la requette $query="SELECT *FROM table"; $nb=1; foreach($choix as $cle=>$value){ if ($nb == 1){ $query.=" WHERE ".$cle."='".$value."'"; }else{ $query.=" AND ".$cle."='".$value."'"; } $nb ++; } } } ?> <h2>Moteur de recherche multicritères</h2> <form name="form1" method="post" action="moteur_multicriteres.php"> Numero:<br> <select name="<?php echo $nom_champ1; ?>"> <option value=-1 <?php if(isset($_POST[$nom_champ1]) AND $_POST[$nom_champ1]==-1) echo "selected"; ?>>---Choisissez --</option> <option value=1 <?php if(isset($_POST[$nom_champ1]) AND $_POST[$nom_champ1]==1) echo "selected"; ?>>1</option> <option value=2 <?php if(isset($_POST[$nom_champ1]) AND $_POST[$nom_champ1]==2) echo "selected"; ?>>2</option> <option value=3 <?php if(isset($_POST[$nom_champ1]) AND $_POST[$nom_champ1]==3) echo "selected"; ?>>3</option> <option value=4 <?php if(isset($_POST[$nom_champ1]) AND $_POST[$nom_champ1]==4) echo "selected"; ?>>4</option> </select> <br><br> Marque:<br> <select name="<?php echo $nom_champ2; ?>"> <option value=-1 <?php if(isset($_POST[$nom_champ2]) AND $_POST[$nom_champ2]==-1) echo "selected"; ?>>---Choisissez --</option> <option value="Peugeot" <?php if(isset($_POST[$nom_champ2]) AND $_POST[$nom_champ2]=="Peugeot") echo "selected"; ?>>Peugeot</option> <option value="Citroen" <?php if(isset($_POST[$nom_champ2]) AND $_POST[$nom_champ2]=="Citroen") echo "selected"; ?>>Citroen</option> <option value="Renault" <?php if(isset($_POST[$nom_champ2]) AND $_POST[$nom_champ2]=="Renault") echo "selected"; ?>>Renault</option> <option value="Toyota" <?php if(isset($_POST[$nom_champ2]) AND $_POST[$nom_champ2]=="Toyota") echo "selected"; ?>>Toyota</option> </select> <br><br> Serie:<br> <select name="<?php echo $nom_champ3; ?>"> <option value=-1 <?php if(isset($_POST[$nom_champ3]) AND $_POST[$nom_champ3]==-1) echo "selected"; ?>>---Choisissez --</option> <option value="Prestige" <?php if(isset($_POST[$nom_champ3]) AND $_POST[$nom_champ3]=="Prestige") echo "selected"; ?>>Prestige</option> <option value="Economique" <?php if(isset($_POST[$nom_champ3]) AND $_POST[$nom_champ3]=="Economique") echo "selected"; ?>>Economique</option> </select> <br><br> Carburant:<br> <select name="<?php echo $nom_champ4; ?>"> <option value=-1 <?php if(isset($_POST[$nom_champ4]) AND $_POST[$nom_champ4]==-1) echo "selected"; ?>>---Choisissez --</option> <option value="SP95" <?php if(isset($_POST[$nom_champ4]) AND $_POST[$nom_champ4]=="SP95") echo "selected"; ?>>SP95</option> <option value="SP98" <?php if(isset($_POST[$nom_champ4]) AND $_POST[$nom_champ4]=="SP98") echo "selected"; ?>>SP98</option> <option value="Diesel" <?php if(isset($_POST[$nom_champ4]) AND $_POST[$nom_champ4]=="Diesel") echo "selected"; ?>>Diesel</option> </select> <br><br> Couleur:<br> <select name="<?php echo $nom_champ5; ?>"> <option value=-1 <?php if(isset($_POST[$nom_champ5]) AND $_POST[$nom_champ5]==-1) echo "selected"; ?>>---Choisissez --</option> <option value="Bleu" <?php if(isset($_POST[$nom_champ5]) AND $_POST[$nom_champ5]=="Bleu") echo "selected"; ?>>Bleu</option> <option value="Rouge" <?php if(isset($_POST[$nom_champ5]) AND $_POST[$nom_champ5]=="Rouge") echo "selected"; ?>>Rouge</option> <option value="Vert" <?php if(isset($_POST[$nom_champ5]) AND $_POST[$nom_champ5]=="Vert") echo "selected"; ?>>Vert</option> </select> <br><br> <input type="submit" name="rechercher" value="Recherche"> </form> <br><br> <?php if(!empty($query)){ echo "<font color='green'>La requette sera: <b>".$query."</b></font>"; } ?> </html>
M@dien
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
30 juil. 2009 à 14:27
30 juil. 2009 à 14:27
Jolie façon de réfléchir que de se dire qu'on est sur la mauvaise route quand on fait trop de if! =)
Et ça marche.^^
Je suppose que tu récupérais les données de la table et que tu filtrais avec des if si j'ai bien compris.
Je suppose également que chaque option du formulaire correspond à un champ particulier dans une table.
Pour moi, la meilleure solution est donc de modifier la requête sql pour chaque option:
De cette manière le filtre sera fait en SQL, ça accélèrera ta recherche par rapport à un filtre par php.
Et ça marche.^^
Je suppose que tu récupérais les données de la table et que tu filtrais avec des if si j'ai bien compris.
Je suppose également que chaque option du formulaire correspond à un champ particulier dans une table.
Pour moi, la meilleure solution est donc de modifier la requête sql pour chaque option:
$request = "SELECT * FROM table WHERE 1 "; IF ($_POST['email'] <> "") {$request .= " AND email = '" . $_POST['email'] . "' ";} IF ($_POST['tel'] <> "") {$request .= " AND tel = '" . $_POST['tel'] . "' ";} ...
De cette manière le filtre sera fait en SQL, ça accélèrera ta recherche par rapport à un filtre par php.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 juil. 2009 à 14:36
30 juil. 2009 à 14:36
je n'ai jamais dit qu'il ne fallait pas de if du tout
il peut les supprimer en mettant les name sous forme ...[] ce qui remplira directement l'array
ceux que j'ai dans l'exemple servent à tester les champs postés
ce qui peut lui servir c'est la partie construction de la requette par une boucle
il peut les supprimer en mettant les name sous forme ...[] ce qui remplira directement l'array
ceux que j'ai dans l'exemple servent à tester les champs postés
ce qui peut lui servir c'est la partie construction de la requette par une boucle
leototo75
Messages postés
14
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 août 2009
30 juil. 2009 à 14:37
30 juil. 2009 à 14:37
Merci alain j'ai compris la manière de procéder maintenant je dosi emttre tout cela en place dans ma tete , et ien réussir els relatiosn avec mes tables.
M@dien oui j'étais découragé car je commençais a avoir trop de if et je pensais tourner en rond ^^.
Oui je récupéris chaque données, les filtrais et
$how_manysex = count($Sexe);
for ($i=0; $i<$how_manysex; $i++)
{
Dans ce for j'avais encore un for et plus d'une dizaine de if ^^` je commençais a tourner en rond hihi.
Et oui tu avait encore raison chaque champs correspond a un champs dans ma Bdd avec par exemple pour les origines une tables de relation ....
Je vais essayer vos idées de sutie , mais je pourrais pas vous dire si cela fonctionne dans les minutes , il me faut du temps pour que je mette tout en place encore merci.
M@dien oui j'étais découragé car je commençais a avoir trop de if et je pensais tourner en rond ^^.
Oui je récupéris chaque données, les filtrais et
$how_manysex = count($Sexe);
for ($i=0; $i<$how_manysex; $i++)
{
Dans ce for j'avais encore un for et plus d'une dizaine de if ^^` je commençais a tourner en rond hihi.
Et oui tu avait encore raison chaque champs correspond a un champs dans ma Bdd avec par exemple pour les origines une tables de relation ....
Je vais essayer vos idées de sutie , mais je pourrais pas vous dire si cela fonctionne dans les minutes , il me faut du temps pour que je mette tout en place encore merci.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 juil. 2009 à 15:17
30 juil. 2009 à 15:17
j'avais pas vu le code de ton formulaire
pourquoi ne mets tu pas des boutons type="radio" pour Homme /Femme il s'exclueront eux même
pareil pour origines
ça te simplifiera ton code de verif si un seul coché
tu peux même en mettre un checked par defaut
et perso je préfère la method="post"
pourquoi ne mets tu pas des boutons type="radio" pour Homme /Femme il s'exclueront eux même
pareil pour origines
ça te simplifiera ton code de verif si un seul coché
tu peux même en mettre un checked par defaut
et perso je préfère la method="post"
leototo75
Messages postés
14
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 août 2009
30 juil. 2009 à 15:20
30 juil. 2009 à 15:20
Le bouton radio m'empeche de faire plusieur choix.Car une personne peut avoir plusieurs origines et on peut chercher les hommes et femmes, soit juste l'un et l'autre.
Et j'ai mit get car ce module est développé en interne.
Et j'ai mit get car ce module est développé en interne.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 juil. 2009 à 15:43
30 juil. 2009 à 15:43
ha ok je croyait que c'était des renseignements sur la personne
GET ou POST n'a aucun rapport avec le developpement en interne, c'est seulement la methode d'envoi des données du formulaire vers le serveur
GET= rajoutée à l'url
POST = pas par l'url
une piste:
GET ou POST n'a aucun rapport avec le developpement en interne, c'est seulement la methode d'envoi des données du formulaire vers le serveur
GET= rajoutée à l'url
POST = pas par l'url
une piste:
<?php //avec method="post" //verif en php si au moins un coché! if(sizeof($_POST['Sexe'])<1){ echo "Vous devez cocher au moins un des deux Homme/ Femme"; exit; }elseif(sizeof($_POST['origines'])<1){ echo "Vous devez cocher au moins une des origines"; exit; }else{ //construction de la requette $query="SELECT * FROM ta_table WHERE "; foreach($_POST['Sexe'] as $cle=>$value){ if($cle==0){ $query.="Sexe='".$value."'"; //premier coche }else{ $query.=" OR Sexe='".$value."'"; //plusieurs coche } } $query.=" AND "; //ajout deuxieme condition champ origine foreach($_POST['origines'] as $cle=>$value){ if($cle==0){ $query.="origines='".$value."'"; //premier coche }else{ $query.=" OR origines='".$value."'"; //plusieurs coche } } //ainsi de suite }
leototo75
Messages postés
14
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 août 2009
17 août 2009 à 15:31
17 août 2009 à 15:31
Merci désolé pour le retard, j'avais une autre mission. Je susi revenus dernièrement sur le module de recherche et j'ai adhérer à la méthode d'Alain.
Merci encore et désolé du retard.
Merci encore et désolé du retard.