Listing

bonjour, j'ai un soucis au niveau de la méthode pour réaliser un listing
mon problème est le suivant : j'ai une liste de clients dans une base de données, je dois proposer une interface qui permet de ressortit une liste de clients en fonction de paramètres renseignés par l'utilisateur
si un des champs est laissé vide par l'utilisateur, il faudrait modifier la requête en enlevant une condition
il y a 9 param pour l'utilisateur, quel est la méthode la plu rapide pour traiter ce problème

10 réponses

  1. Modérateur
    Dans quel langage ?

    Sinon il suffit de récupérer les paramètres et de construire la requêtes SQL en conséquence, non ?
    0
    1. quelle base de donnée ?
      quelle langage/application ?
      0
      1. oui on est bien d'accord à ce niveau là, il faut récupérer les paramètres et c'est ce que j'arrive faire
        mais si l'utilisateur va laisser un champ vierge par exemple pour la ville alors la requête sera du style WHERE ville='$ville' et $ville sera vide donc les résultats de la requête seront faussés
        en fait je voudrai que lorsque $ville est vide la requête ne contienne pas la condition WHERE ville=$ville mais garde toutes les autres conditions où les variables ne sont pas vides
        tu vois ce que je veux dire
        0
        1. if (!($ville == ""))
          $requete = $requete . "ville='$ville'"

          en gro tu concatenes si le champ n'est pas vide
          0
          1. Modérateur
            oui voilà, en ajoutant "AND truc='$machin'" pour chaque paramètre supplémentaire disponible.
            0
            1. Slt,
              j'orai dit :
              if (!($ville == ""))
              $requete = $requete . "AND ville='$ville'"

              sans le AND çà passera pas
              0
              1. voilà ma requete
                SELECT id FROM identite
                WHERE canton='$canton'
                AND ville='$ville'
                AND dirigeant='$dirigeant'
                AND categorie='$categorie'
                AND cp='$cp',
                AND contrat='$contrat';
                le problème c'est que si le champ ville par exemple n'est pas renseigné par l'utilisateur, la requête sera faussée car elle va chercher une ville s'appelant " "
                il faudrait que si le champ ville était ville
                la ligne AND ville='$ville' soit ignorée
                (PHP,odbc)
                0
                1. Modérateur
                  instruction "if" ?
                  0
              2. mais il y au une centaine d'instructions if possible en fonction des différents renseignements entrés par l'utilisateur, ce que j'expliquai pour ville est identique pour tous les autres paramètres canton, dirigeant ...
                0
                1. t'a pa du tout lire, je te rappelle ce que sebsauvage en plus détaillé

                  $requete = "SELECT id FROM identite WHERE 1";

                  if (!($ville == ""))
                  $requete = $requete . "AND ville='$ville'"
                  if (!($dirigeant == ""))
                  $requete = $requete . "AND dirigeant='$dirigeant'"
                  .....

                  pour le where 1, je ne suis pas sur mais c'est a cause des and sinon tu risque d'avoir where and si aucune condition n'est remplie
                  0
                  1. désolé effectivement j'avais pas bien lu merci beaucoup
                    0