[PHP&SQL] insérer condition php dans requête

gugusco -  
Navid_92 Messages postés 778 Statut Membre -
Bonjour,

J'ai cherché des solutions sur le net sans succès donc je m'adresse vous:

A la base mon problème est de faire un formulaire de recherche via HTML et PHP et suivant les critères choisis, retourner les résultats de la base de donnée.
Mais comment faire pour que lorsque l'utilisateur est indifférent à un critère, il ne retienne pas ce critère dans la partie WHERE de la requête SQL.

J'avais pensé à utiliser une variable vide mais je pense qu'il va sélectionner pour ce critère les champs vides.
J'ai donc pensé à faire
$critere = ''
SELECT ... FROM ... WHERE if($critere){critere = $critere} (sans concaténer évidemment)


En gros si l'utilisateur est inddifférent à ce critère, $critere n'existe pas et il n'utilise pas cette variable comme condition dans la requête.

Merci d'avance

5 réponses

  1. mouglixx Messages postés 535 Statut Membre 159
     
    Pas sur de tout comprendre, mais fais ta démarche en php.
    if ($!critere) { unset($sqlplus) ; }
    else { $sqlplus = 'if blablablabla ' ; }
    Et dans ta requête sql, tu ajoute $sqlplus

    $sql ="SELECT ... FROM ... WHERE $sqlplus (sans concaténer évidemment)";
    0
  2. gugusco
     
    Quand j'applique cela sans concaténer, il me met 'Undefined variable' pour $sqlplus dans la requête (car elle a été détruite par unset)
    0
  3. gugusco
     
    Au lieu de unset, je voudrais qqch qui fasse que $sqlplus n'apparaisse pas dans la condition where.
    0
  4. mouglixx Messages postés 535 Statut Membre 159
     
    Oh lala.. T'es sur de vouloir coder ?
    Fais du CMS ça me semble plus adapté..
    Dans sqlplus rajoute where..
    Là on parle pas de coding, juste de logique
    Fin du suivi de ce post pour ma part
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Navid_92 Messages postés 778 Statut Membre 87
     
    Tient un code fait vite fait, peut-être te conviendras-t-il mais comme on te l'a déjà dit si tu n'arrives par trop à faire cela, axes toi plus vers des CMS préfabriqués.

    <?php
    if (isset($_POST['critere'])) 
    {
      switch($_POST['critere'])
      {
        case 'nom' : $condition_query = 'WHERE critere = nom';
        case 'prenom' : $condition_query = 'WHERE critere = prenom';
        case 'age' : $condition_query = 'WHERE critere = age';
      }
    }
    else
      $condition_query = null;
    
    $retour_query = mysql_query("SELECT * FROM nom_de_la_table $condition_query") or exit(mysql_error());  
    
    $stockage_donnees = mysql_fetch_array($retour_query);
    
    echo 'Nom: '.htmlspecialchars($stockage_donnees['nom']);
    echo 'Prénom: '.htmlspecialchars($stockage_donnees['prenom']);
    echo 'Age: '.htmlspecialchars($stockage_donnees['age']);
    ?>

    ? Navid, alias DestEN-
    ? Contributeur sécurité
    0