Bonjour à tous,
J'ai récupéré un bout de code qui me permet de faire des recherches sur des champs et selon des opérateurs. Voici la vue :
et voici le code :
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 <table cellpadding=5 cellspacing=0> <form name="frm" method="post" action="liste.php?mode=search"> <tr><td align=right>Champ : </td><td><select name="champ"> <option value="titre">Titre</option> <option value="auteur">Auteur</option> <option value="membre">Emprunteur</option> <option value="reservation">Réservation</option> <option value="observations">Observations</option> <option value="etat">État</option> <option value="code">Référence</option> </select> <select name="oper"> <option value="like">contient</option> <option value="notl">ne contient pas</option> <option value="egal">est égal à</option> <option value="comm">commence par</option> <option value="fini">finit par</option> <option value="vide">est vide</option> </select> </td></tr> <tr><td align=right>Mots clefs : </td><td><input type=text name="mots" size=36></td></tr> <tr><td align=center colspan=2><input type="submit" value="Valider"></td></tr> </form></table>
Cela fonctionne parfaitement. Je souhaiterais maintenant doubler les critères en concaténant avec "ET" "OU"
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 <? if (@$_GET["mode"]=="search"){ $SQL="select * from medias where 1=0"; if (@$_POST["oper"]=="like"){$tst=" like '%$$$%'";} if (@$_POST["oper"]=="notl"){$tst=" not like '%$$$%'";} if (@$_POST["oper"]=="egal"){$tst=" = '$$$'";} if (@$_POST["oper"]=="comm"){$tst=" like '$$$%'";} if (@$_POST["oper"]=="fini"){$tst=" like '%$$$'";} $xmots=explode(" ",@$_POST["mots"].","); for($i=0;$i<=sizeof($xmots);$i++){ if ($xmots[$i]!=""){$SQL.=$chp.str_replace("$$$",$xmots[$i]);} } if ((@$_POST["oper"]=="vide"){ $SQL="select * from medias where ".@$_POST["champ"]." is Null";} $SQL=$SQL." order by ".@$_POST["champ"]; } echo "SQL=".$SQL."<hr>"; ?>
La vue serait comme suit :
Pourriez vous me donner une piste sur comment dans ce bout de code :
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 <table cellpadding=5 cellspacing=0> <form name="frm" method="post" action="liste.php?mode=search"> <tr><td align=right>Champ : </td><td><select name="champ"> <option value="titre">Titre</option> <option value="auteur">Auteur</option> <option value="membre">Emprunteur</option> <option value="reservation">Réservation</option> <option value="observations">Observations</option> <option value="etat">État</option> <option value="code">Référence</option> </select> <select name="oper"> <option value="like">contient</option> <option value="notl">ne contient pas</option> <option value="egal">est égal à</option> <option value="comm">commence par</option> <option value="fini">finit par</option> <option value="vide">est vide</option> </select> </td></tr> <tr><td align=right>Mots clefs : </td><td><input type=text name="mots" size=36></td></tr> <tr> <td></td><td align=right>ET <input name="et_ou" value="AND" checked="checked" type="radio"> OU <input name="et_ou" value="OR" type="radio"></td> </tr> <tr><td align=right>Champ 2 : </td><td><select name="champ2"> <option value="titre">Titre</option> <option value="auteur">Auteur</option> <option value="membre">Emprunteur</option> <option value="reservation">Réservation</option> <option value="observations">Observations</option> <option value="etat">État</option> <option value="code">Référence</option> </select> <select name="oper2"> <!-- Les opérateurs proposés --> <option value="like">contient</option> <option value="notl">ne contient pas</option> <option value="egal">est égal à</option> <option value="comm">commence par</option> <option value="fini">finit par</option> <option value="vide">est vide</option> </select> </td></tr> <tr><td align=right>Mots clefs 2 : </td><td><input type=text name="mots2" size=36></td></tr> <tr><td align=center colspan=2><input type="submit" value="Valider"></td></tr> </form></table>
je pourrais intégrer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $xmots=explode(" ",@$_POST["mots"].","); for($i=0;$i<=sizeof($xmots);$i++){ if ($xmots[$i]!=""){$SQL.=$chp.str_replace("$$$",$xmots[$i]);} } if ((@$_POST["oper"]=="vide"){ $SQL="select * from medias where ".@$_POST["champ"]." is Null";} $SQL=$SQL." order by ".@$_POST["champ"]; }et le checkbox "et_ou"
Code : Sélectionner tout - Visualiser dans une fenêtre à part @$_POST["champ2"], @$_POST["mots2"],@$_POST["oper2"]
Merci par avance pour vos lumières.
Partager