Moteur de recherche SQL

david_anthony

david_anthony Le 17 juin 2016 à 18:03 (Édité le 25 janvier 2019 à 17:51)

salut a tous
je suis David et j habite depuis peu en Allemagne ou je fais des etudes.et je tafs dans une petite boite de la place! j ai recu depuis peu un devoir ! celui de faire un moteur de recherche base sur les donnes enregistres dans la base donnee SQL! 
le Probleme est le suivant:
le client doit avoir la possibilitte de choisir les cases comme il le souhaite ! la seule Case obligatoire a rempli est la Ville et toutes les autres inputs sont falcutatifs , il n est pas obliger de les remplis!
La quand j y reflechi bien ca me donne des centaines de possibilites ! 
j aimerais donc savoir s il y aurait  pas une ou autres methodes par laquelle je pourrais passer.

Merci 

coucougael94

coucougael94 Le 19 août 2016 à 14:02

Je pense pour ton formulaire, que tu dois ajouter des valeurs a chaque input "Toutes les ..."(si ce n'est pas le cas) Ce qui permet de trouvé plus de résultat puisque moins de filtre.
Ensuite, j'imagine que tu t' y connais en php, car j'ai un code :
$filtres="SELECT * FROM 'table' WHERE ";
if(isset($_GET['choixVille']))
{
   if(htmlspecialchars($_GET['choixVilles'])=="Paris" || htmlspecialchars($_GET['choixVilles'])=="Rennes" ||htmlspecialchars($_GET['choixVilles'])=="Nice" || htmlspecialchars($_GET['choixVilles'])=="Cannes")
   {
      $filtres+="choixVilles="+$_GET['choixVilles']+" AND ";//Pas besoin d'htmlspecialchars, les conditions on veifié qu'il s'agit de quelque chose qui existent.
      //Le AND a la fin permet d'ajouter d'autre filtres.
   }
}
if(isset($_GET['rayon']))
{
   if(intval(htmlspecialchars($_GET['rayon']))<121 AND intval(htmlspecialchars($_GET['rayon']))>0)
   {
      $filtres+="rayon <="+htmlspecialchars($_GET['rayon'])+" AND ";
   }
}
if(isset($_GET['dateAller']))
{
   if(intval(htmlspecialchars($_GET['dateAller']))<121 AND intval(htmlspecialchars($_GET['dateAller']))>0)
   {
      $filtres+="dateAller ="+htmlspecialchars($_GET['dateAller'])+" AND ";
   }
}
if(isset($_GET['dateRetour']))
{
   if(intval(htmlspecialchars($_GET['dateRetour']))<121 AND intval(htmlspecialchars($_GET['dateRetour']))>0)
   {
      $filtres+="dateRetour ="+htmlspecialchars($_GET['dateRetour'])+" AND ";
   }
}
Je ne sait pas si c'est une bonne solution mais tu en as une.
Tu doit avant d’exécuter ta requête, enlever les AND a la fin de la chaîne $filtres.
A toi d'ajouter les derniers filtres.
Ce n'est pas pour être méchant mais tu ne doit pas avoir notre aide puisque c'est ton devoir.
En espérant que ma réponse ne soit pas tardive...
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte