[SQL] recherche multicritère
Bonjour,
Je débute en php et cherche à réaliser un moteur de recherche à partir d'un formulaire à menu déroulant qui permette à la fois la recherche sur un seul critère ou sur plusieurs critères combinés si le checkbox
"obligatoirement tout les critères" est activé.
Pour ça j'ai adapté un script qui fonctionnait bien pour un formulaire par recherche en texte libre mais qui doit être adapté à un formulaire à menu déroulant
Quelqu'un pourrait-il m'aider à adapter le script ci-dessous à mon formulaire à menu déroulant: si quelqu'un voit où ça coinçe?? Merci par avance
Code:
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
| $choix1 = $_POST['communes'];
$choix2 = $_POST['sites'];
$choix3 = $_POST['themes'];
$choix4 = $_POST['allcriteres'];
if ( $choix4 == "oui")
$operateur="AND";
else
$operateur="OR";
if ($choix1 != "")
$finrequete .= " Nom_commune LIKE '%$choix1%'";
if ($choix2 != "")
if ($finrequete != "")
$finrequete .= " $operateur (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
else
$finrequete .= " (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
if ($choix3 != "")
if ($finrequete != "")
$finrequete .= " $operateur (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3%')";
else
$finrequete .= " (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3')";
if ($finrequete != "")
$sql="SELECT * FROM Cartes_postales WHERE $finrequete";
else
$sql="SELECT * FROM Cartes_postales"; |
[Débutant]recherche multicritère
J'avais d'abord fait un formulaire pour une recherche de cartes postales qui proposait 3 critères de recherche par commune, site et thème mais où les champs étaient en texte libre.
Le script ci-dessous fonctionnait mais maintentant je voudrais l'adapter à un formulaire dont les choix de chacun des 3 critères dans le formulaire se trouvent dans 3 menus déroulant, et où chacun des critères peut être choisi soit séparement soit combiné avec les autres, (avec le checkbox allcriteres)du coup le script ci-dessous ne marche plus et j'arrive pas l'adapter, peut-être pourrais-tu me dire où ça cloche?
Code:
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
| $choix1 = $_POST['communes'];
$choix2 = $_POST['sites'];
$choix3 = $_POST['themes'];
$choix4 = $_POST['allcriteres'];
if ( $choix4 == "oui")
$operateur="AND";
else
$operateur="OR";
if ($choix1 != "")
$finrequete .= " Nom_commune LIKE '%$choix1%'";
if ($choix2 != "")
if ($finrequete != "")
$finrequete .= " $operateur (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
else
$finrequete .= " (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
if ($choix3 != "")
if ($finrequete != "")
$finrequete .= " $operateur (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3%')";
else
$finrequete .= " (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3')";
if ($finrequete != "")
$sql="SELECT * FROM Cartes_postales WHERE $finrequete";
else
$sql="SELECT * FROM Cartes_postales"; |
[débutant]recherche multicritères
ça me dit:
Notice: Undefined index: allcriteres in E:\Sites\gestion\archives\testbdd-archives\reponse_cartes_postales_multi.php on line 39
Notice: Undefined variable: finrequete in E:\Sites\gestion\archives\testbdd-archives\reponse_cartes_postales_multi.php on line 47
[débutant]recherche multicritères
Ce scrit fonctionnait quand le formulaire ne proposait pas les choix dans 3 menus déroulant mais en texte libre.
[débtant]recherche multicritères
Pour le isset ça me dit
Fatal error: Call to undefined function: issest() in E:\Sites\gestion\archives\testbdd-archives\scriptrecherche.php on line 41
mon code de reponse est le suivant:
$choix1 = $_POST['communes'];
$choix2 = $_POST['sites'];
$choix3 = $_POST['themes'];
if (issest($_POST['allcriteres']))
$operateur="AND";
else
$operateur="OR";
if ($choix1 !=[""])
$finrequete = " Nom_commune LIKE '%$choix1%'";
if ($choix2 !=[""])
if ($finrequete != "")
$finrequete .= " $operateur (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
else
$finrequete .= " (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
if ($choix3 != "")
if ($finrequete != "")
$finrequete .= " $operateur (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3%')";
else
$finrequete .= " (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3')";
if ($finrequete != "")
$sql="SELECT * FROM Cartes_postales WHERE $finrequete";
else
$sql="SELECT * FROM Cartes_postales";
[débutant]recherche multicritères
oui merci ça marche :lol:
[débutant] recherche multicriteres
Par contre du coup il me vient un autre problème c'est que dans le formulaire à 3 critères et à menu déroulant dans les choix des menu déroulant y jamais le choix aucun(e) (pour la cherche sur 3 critères par commune, par site, par thème)
Donc si on veut isoler les critères un à un , peut-être faut-il mettre un checkbox devant chaque critère?