IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recherche Multi-Multi critères


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Recherche Multi-Multi critères
    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 :
    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>
    &nbsp;&nbsp;
    <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>
    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
    <? 
     
    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>";
     
    ?>
    Cela fonctionne parfaitement. Je souhaiterais maintenant doubler les critères en concaténant avec "ET" "OU"

    La vue serait comme suit :

    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>
    &nbsp;&nbsp;
    <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>
    &nbsp;&nbsp;
    <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>
    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
     
     
        $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"];
    }
    je pourrais intégrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     @$_POST["champ2"], @$_POST["mots2"],@$_POST["oper2"]
    et le checkbox "et_ou"

    Merci par avance pour vos lumières.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Bon bah je me réponds à moi même, ça pourra peut-être aider

    il suffisait de faire deux fois la même chose en intégrant les secondes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @$_POST["champ2"], @$_POST["mots2"],@$_POST["oper2"]
    dans un par exemple.

    Attention à la requête finale, ne pas oublier le comme moi

    C'est surement pas le code le plus propre mais bon ... on est là pour apprendre, si un Dieu passe par là, le code plus propre peut-être sera

    Sur ce, il me reste plus beaucoup de temps de sommeil alors vite au lit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Recherche Minimum multi critère et renvoi dans la base
    Par LBE41 dans le forum Access
    Réponses: 2
    Dernier message: 02/10/2014, 10h22
  2. [XL-2007] recherche valeur multi critère
    Par maximilien59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/04/2014, 12h24
  3. [XL-2007] recherche VBA multi-colonnes
    Par kineton dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/01/2011, 01h11
  4. recherche multi-multi critere
    Par lnikolanta dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/05/2009, 04h27
  5. [Menu recherché] Vertical, multi-niveau, pas de frame
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/03/2006, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo