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

PHP & Base de données Discussion :

[Conception] soucis avec mon code de recherche par un ou plusieurs critères


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut [Conception] soucis avec mon code de recherche par un ou plusieurs critères
    salut à tous!!

    j'ai fait un petit moteur de recherche en fonction de certain critère (dimension, echelle et indice), sous form de liste déroulante.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    if (isset ( $_POST['dimension']))
    {
    $dimension = $_POST['dimension'];
    } else {"";}
     
    if (isset($_POST['echelle']))
    {
    $echelle = $_POST['echelle'];
    }
    else {"";}
     
    if (isset($_POST['indice']))
    {
    $indice = $_POST['indice'];
    }
    else {"";}
     
     
    if (isset ($dimension) && isset($echelle))
     {
     
    $aff = "SELECT num FROM cn WHERE dimension = '".$dimension."' AND echelle = '".$echelle."'";
       //echo $aff."<br>";
    $numaff = mysql_query($aff) or die (mysql_error());
    .......
    }
     
     
    if (isset ($dimension))
     {
      $aff1 = "SELECT num FROM cnn WHERE dimension = '".$dimension."'";
       $numaff1 = mysql_query($aff1) or die (mysql_error());
    ........
    }
     
    if (isset ($echelle))
     {
      $aff2 = "SELECT num FROM cn WHERE echelle = '".$echelle."'";
       $numaff2 = mysql_query($aff2) or die (mysql_error());
    ........
    }
     
    if (isset($indice))
    {
    $ind = "SELECT num FROM cn WHERE nom LIKE '%".$indice."'";
    $querind = mysql_query($ind) or die (mysql_error());
    .........
    }

    donc j'aimerais faire des recherches en fonction de 1 ou plusieurs critères la condition if (isset ($dimension) && isset($echelle),recherche pour les 2 criteres et aussi les autres condtions if(isset ($dimension)) et if(isset ($echelle))
    si je cherche en fonction de l''echelle' j'ai aussi le résultat de 'indice' qui s'affiche alors que je n'ais pas demandé à faire de recherche par indice et vis à vis de mon code je ne vois pas où est le problème

    si vous pouvez m'aider..
    merci
    +++++

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Pour ta question de multi critère je te dirais de prendre exemple sur la solution donné dans ce sujet : Recherche avec plusieurs critères

    Et sinon pour la liste déroulante, tu as une seule ou plusieurs ??

    Et pour tes tests je te conseillerais la rapidité lol :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dimension = isset($_POST['dimension'])?($_POST['dimension']):("");
    ou encore tu fais juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset ( $_POST['dimension']))
    {
    $dimension = $_POST['dimension'];
    }
    et après si tu dois tester ton dimension tu fais un
    qui te dira si ta variable est vide ou si elle contient quelque chose

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    oui j'ai plusieurs liste déroulante

    mais isset et empty c'est pas la meme chose?
    enfin isset = savoir si elle existe
    mais si elle existe c'est qu'elle est "pleine"

    ?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Donc c'est normal que tu entres dans plusieurs if si tu as plusieurs select dans un même form.

    isset ca teste pour voir si elle est envoyé.Et ce peut importe son contenu puisque c'est un champ d'un formulaire.
    bool empty ( mixed var )
    Détermine si une variable contient une valeur non nulle.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    et je voulais savoir aussi comment faire pour par exemple :
    je prends comme critere la dimension et l'echelle, ca me donne comme résultat ce que je veux et ayant comme dimension ce que jai demandé et comme echelle, ce que j'ai demandé et que ca ne me donne pas le résultat de la dimension choisie seule ni de l'echelle seule
    par exemple :
    1 ==> dimension 100, echelle 1/50
    2 ==> dimension 100, echelle 1/100
    3 ==> dimension 100, echelle 1/50

    je selectionne dimension 100 et echelle 1/50
    donc comme résultats j'ai 1 et 3

    mais au lieu de ça j'ai :
    1 ET 3 (isset($dimension)) && (isset ($echelle))
    1, 2, ET 3 (isset($dimension))
    1 ET 3 (isset($echelle))


  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Hmmmm tu peux la refaire moins vite stp
    J'ai pas trop compris

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    huumm oki

    alors il y a 3 criteres :
    dimension, echelle, et indice

    1 ==> dimension 100, echelle 1/50
    2 ==> dimension 100, echelle 1/100
    3 ==> dimension 100, echelle 1/50

    je fais une recherche pour les 2 criteres en meme temps (dimension et echelle)
    je veux rechercher pour dimension 100 ET echelle 1/50
    donc j'ai comme résultat de la requete SELECT num_plan FROM plan WHERE dimension = '".$dimension."' AND echelle = '".$echelle."': 1 et 3

    mais en plus j'ai le résultat de la requete SELECT num_plan FROM plan WHERE dimension = '".$dimension."' et celui de la requete SELECT num_plan FROM plan WHERE echelle = '".$echelle."'

    normal mais comment l'eviter?

    car j'aimerais faire une recherche en fonction de 1 critère, 2 ou 3

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    ok je vois tu peux me dire quel est le critère obligatoire ? s'il y en a un
    Aussi quand tu choisis pas l'un des trois critères c'est quoi la valeur par défaut ?

    Bon j'ai fait très simple lol (sans trop réflechir)
    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
    $dimension = isset($_POST['dimension'])?($_POST['dimension']):("");
    $echelle = isset($_POST['echelle'])?($_POST['echelle']):("");
    $indice = isset($_POST['indice'])?($_POST['indice']):("");
     
    if (!empty($dimension) && !empty($echelle))
    {
     
    $aff = "SELECT num FROM cn WHERE dimension = '".$dimension."' AND echelle = '".$echelle."'";
       //echo $aff."<br>";
    $numaff = mysql_query($aff) or die (mysql_error());
    .......
    }
     
     
    if (!empty($dimension))
     {
      $aff1 = "SELECT num FROM cn WHERE dimension = '".$dimension."'";
       $numaff1 = mysql_query($aff1) or die (mysql_error());
    ........
    }
     
    if (!empty($echelle))
     {
      $aff2 = "SELECT num FROM cn WHERE echelle = '".$echelle."'";
       $numaff2 = mysql_query($aff2) or die (mysql_error());
    ........
    }
     
    if (!empty($indice))
    {
    $ind = "SELECT num FROM cn WHERE nom LIKE '%".$indice."'";
    $querind = mysql_query($ind) or die (mysql_error());
    .........
    }

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <tr><td>Dimension</td>
    <td>
    <SELECT name='dimension' size='1'>
    <option value='0' selected>-------------
    <OPTION>50*50
    <OPTION>100*100
    <OPTION>150*150
    <OPTION>200*200
    </SELECT></td></tr>
    c'est ma liste deroulante qui permet de choisir le critere 'dimension'

  10. #10
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    ah ca change tout alors lol :
    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
    $dimension = isset($_POST['dimension'])?($_POST['dimension']):("");
    $echelle = isset($_POST['echelle'])?($_POST['echelle']):("");
    $indice = isset($_POST['indice'])?($_POST['indice']):("");
     
    if ((!empty($dimension)&&($dimension!=0)) && (!empty($echelle) && $echelle!=0))
    {
     
    $aff = "SELECT num FROM cn WHERE dimension = '".$dimension."' AND echelle = '".$echelle."'";
       //echo $aff."<br>";
    $numaff = mysql_query($aff) or die (mysql_error());
    .......
    }
     
     
    if ((!empty($dimension)&&($dimension!=0)))
     {
      $aff1 = "SELECT num FROM cn WHERE dimension = '".$dimension."'";
       $numaff1 = mysql_query($aff1) or die (mysql_error());
    ........
    }
     
    if ((!empty($echelle) && $echelle!=0))
     {
      $aff2 = "SELECT num FROM cn WHERE echelle = '".$echelle."'";
       $numaff2 = mysql_query($aff2) or die (mysql_error());
    ........
    }
     
    if (!empty($indice))
    {
    $ind = "SELECT num FROM cn WHERE nom LIKE '%".$indice."'";
    $querind = mysql_query($ind) or die (mysql_error());
    .........
    }
    Je suppose qu'ils ont quand même un value les 50*50 et cie

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    VOICI les résultats que j'obtiens si je choisi comme criteres (en meme temps) dimension 100 et echelle 1/50 et je fais ce que tu me dis

    ==> requete dimension && echelle (1 et 2 ont la dimension 100 et l'echelle 1/50)
    N°1 DIM + ECHE

    N°2 DIM + ECHE

    ==> requete dimension (1 et 2 ont la dimension 100)
    N°1 DIM

    N°2 DIM

    ==> requete echelle (1, 2 et 5 ont l'echelle 1/50)
    N°1 ECHE

    N°2 ECHE

    N°5 ECHE


    j'ai donc 7 résultats de 3 requetes alors que je devrais en avoir que 2 de la 1ere requete avec dimension && echelle

  12. #12
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    ok et avec ceci :
    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
    <?
     
    $dimension = isset($_POST['dimension'])?($_POST['dimension']):("");
    $echelle = isset($_POST['echelle'])?($_POST['echelle']):("");
    $indice = isset($_POST['indice'])?($_POST['indice']):("");
     
    if ((!empty($dimension)&&($dimension!=0)) && (!empty($echelle) && $echelle!=0))
    {
     
    $aff = "SELECT num FROM cn WHERE dimension = '".$dimension."' AND echelle = '".$echelle."'";
       //echo $aff."<br>";
    $numaff = mysql_query($aff) or die (mysql_error());
    .......
    }
     
     
    if ((!empty($dimension)&&($dimension!=0)) && $dimension == 0)
     {
      $aff1 = "SELECT num FROM cn WHERE dimension = '".$dimension."'";
       $numaff1 = mysql_query($aff1) or die (mysql_error());
    ........
    }
     
    if ((!empty($echelle) && $echelle!=0) && $echelle == 0)
     {
      $aff2 = "SELECT num FROM cn WHERE echelle = '".$echelle."'";
       $numaff2 = mysql_query($aff2) or die (mysql_error());
    ........
    }
     
    if (!empty($indice))
    {
    $ind = "SELECT num FROM cn WHERE nom LIKE '%".$indice."'";
    $querind = mysql_query($ind) or die (mysql_error());
    .........
    }
     
     
     
    ?>
    Là ca devrait aller je pense

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    parce que si je choisis les 2 criteres dimension et echelle, donc dimension et echelle sont renseignés ce qui provoque forcement les requetes SELECT num_plan FROM plan WHERE dimension = '".$dimension."' et SELECT num_plan FROM plan WHERE dimension = '".$echelle."'

    :s

  14. #14
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tu as testé le dernier code ?

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    bon, ça marche mais pas vraiment
    en faites j'arrive donc à n'avoir que le resultat pour les 2 criteres en meme temps
    mais si je cherche avec seulement l'echelle et seulement la dimension ça ne me donne pas de résultats ...

    :s

  16. #16
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    bon on va tester un truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if($dimension != 0 && $echelle != 0)
    {
     
    }
    else if ($dimension != 0 && $echelle == 0)
    {
     
    }
    else if ($echelle != 0 && $dimension == 0)
    {
     
    }
    je te laisse remplir les trous

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    yes té un boss KEROD
    jte fais un bisou pour la peine lol
    en tout cas j'avoue que c'est bien pensé !!

    merci beaucoup d'avoir donné un peu de ton temps pour m'aider

  18. #18
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    De rien, mais j'avais remarqué la petite erreur depuis l'autre code donc c'est pas un exploit

    Sinon moi je vais retour sur mon C# lol

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    mais si!! tu es fort c'est tout !!
    bon courage avec le C

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

Discussions similaires

  1. Simplifier mon code de recherche avec listview1
    Par hacker59 dans le forum VB.NET
    Réponses: 7
    Dernier message: 01/12/2014, 11h02
  2. [XL-2003] soucis avec mon code
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/06/2009, 17h43
  3. Newbie : j'ai un soucis avec mon code
    Par arno_mrs13 dans le forum SGBD
    Réponses: 2
    Dernier message: 08/08/2007, 17h21
  4. Serveur/Client UDP: comment envoyer un fichier avec mon code
    Par danje dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/12/2005, 14h54
  5. petit soucis avec mon graveur
    Par Vador dans le forum Périphériques
    Réponses: 8
    Dernier message: 02/11/2005, 14h58

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