Bonjour à tous,
J’ai un formulaire de recherche pour rechercher des images et les informations qui les concernent (leurs notices), qui propose deux champs de saisies, avec, entre les deux, une liste déroulante proposant les choix : ET OU SAUF.
Lorsque des mots sont saisies et que l’opérateur est choisi dans la liste, l’utilisateur clique sur valider, ce qui génère ma requête.
J’arrive à gérer sans problème si l’opérateur est ET ou OU mais je n’arrive pas à générer une requête si l’opérateur est SAUF.
Je pensais qu’il fallait utiliser NOT LIKE mais je n’arrive pas à avoir des résultats qui conviennent à chaque fois avec ceci.![]()
Quelqu’un pourrait –il me dire comment je peux faire ça ? ?
Merci d’avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 if(!empty($_POST["saisie1"])) { $psaisie1=stripslashes($_POST["saisie1"]); $saisie1=addslashes($psaisie1); $saisie1=explode(" ", $saisie1); $passage=0; while(list( ,$premiersaisie1) = each($saisie1)) { foreach ($motsvides as $key=>$value) { $premiersaisie1 = eregi_replace("$value", "", "$premiersaisie1"); } if ((($premiersaisie1) != "") && ($premiersaisie1) != " ") { $premiersaisie1=addslashes($premiersaisie1); if($passage) $requetesaisie1 .= " AND "; $requetesaisie1 .= "(C.nom LIKE '%$premiersaisie1%'" . " OR IMP.nomimprimeur LIKE '%$premiersaisie1%' OR ED.nomediteur LIKE '%$premiersaisie1%'" . " OR I.titre LIKE '%$premiersaisie1%' OR I.soustitre LIKE '%$premiersaisie1%'" . " OR I.legende LIKE '%$premiersaisie1%')"; $passage=1; } } if (!empty($_POST["saisie2"])) { $psaisie2=stripslashes($_POST["saisie2"]); if (($_POST["listeetousauf1"])=="et1") { $booleen1 = " AND "; } if (($_POST["listeetousauf1"])=="ou1") { $booleen1 = " OR "; } if (($_POST["listeetousauf1"])=="sauf1") { $booleen1 = " AND "; } $saisie2=addslashes($psaisie2); $saisie2=explode(" ", $saisie2); $passage=0; while(list( ,$premiersaisie2) = each($saisie2)) { foreach ($motsvides as $key=>$value) { $premiersaisie2 = eregi_replace("$value", "", "$premiersaisie2"); } if ((($premiersaisie2) != "") && ($premiersaisie2) != " ") { $premiersaisie2=addslashes($premiersaisie2); if($passage) $requetesaisie2 .= " AND "; if ((($_POST["listeetousauf1"])=="et1") || (($_POST["listeetousauf1"])=="ou1")) { $requetesaisie2 .= "(C.nom LIKE '%$premiersaisie2%'" . " OR IMP.nomimprimeur LIKE '%$premiersaisie2%' OR ED.nomediteur LIKE '%$premiersaisie2%'" . " OR I.titre LIKE '%$premiersaisie2%' OR I.soustitre LIKE '%$premiersaisie2%'" . " OR I.legende LIKE '%$premiersaisie2%')"; } $passage=1; } $finrequete2 = "$booleen1 $requetesaisie2"; } } } $finrequete = "AND ($requetesaisie1 $finrequete2 $finrequete3)"; } if ($_POST['submitvalider'] != '') { if ($finrequete) { $requete="SELECT I.titre, …I.soustitre, I.legende," . " FROM images as I LEFT JOIN collections as C ON I.idCOLL=C.id" . " LEFT JOIN impression as IMP ON I.idIMP=IMP.id" . " LEFT JOIN edition as ED ON I.idED=ED.id" . " LEFT JOIN categories as CAT ON I.idCAT=CAT.id" . " WHERE 1 $finrequete $orderby"; }
Partager