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 :

Requêtes SQL de filtrage [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Requêtes SQL de filtrage
    Bonjour,

    je suis en train de développer un filtre qui permette en fonction de 2 champs (type "SELECT") d'afficher tel ou tel résultat, hors je suis confronté à ce souci :

    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
    if(isset($_GET['cause']))
    {
            $cause_rec = htmlentities($_GET['cause']);
    }
    else
    {
            $cause_rec = '';
    }
     
    if(isset($_GET['etablissement']))
    {
            $etablissement_rec = htmlentities($_GET['etablissement']);
    }
    else
    {
            $etablissement_rec = '';
    }
     
    $req="";
     
    if($etablissement_rec == true){
    	$req_1 = 'WHERE etablissement LIKE "%'.$etablissement_rec.'%"';
    }
    elseif($cause_rec == true){
    	$req_1 = 'WHERE cause LIKE "%'.$cause_rec.'%"';
    }
    else{
    	$req_1 = $req;
    }
     
    $requete_finale = mysql_query("SELECT * FROM infos_tbl ".$req_1." ORDER BY id DESC");
     
    while($dnn = mysql_fetch_array($requete_finale)) {
    Mon résultat
    }
    Donc pour résumer, lorsque je fais un ECHO de la variable $req_1, elle semble bien prise en compte en fonction du IF. Elle m'affiche bien le résultat avec la variable $etablissement_rec ou la variable $req mais rien qui s'affiche avec $cause_rec ...

    Une idée ? Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Lorsqu'un programme construit dynamiquement une requête avant de l'exécuter, la première chose à faire dans la phase de mise au point est d'afficher la requête construite et l'exécuter manuellement dans un interpréteur de code SQL, hors de l'application, pour s'assurer de sa validité.
    On peut ensuite s'inquiéter de la prise en charge du résultat de la requête par le programme.

    La partie requête SQL, qui est la seule qui intéresse cette partie du forum, comporte ce qui pourrait être une erreur.
    En effet, en SQL normalisé, une chaine de caractère doit être encadrée de guillemets simples et non de guillemets doubles (lignes 22 et 25).
    Toutefois cette règle n'est pas respectée par tous les SGBD.

    Pour le reste du programme, ce n'est pas ici qu'on pourra t'aider à le mettre au point, mais plutôt dans la partie du forum dédiée à ce langage.

    Edit : Cette discussion a été initialement postée dans le forum Langage SQL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Après plusieurs essais, je pense que mon pb est lié à la condition php:

    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
    $req="";
     
    if(($etablissement_rec == true)&&($cause_rec == false)){
    	$req_1 = "WHERE etablissement LIKE '%".$etablissement_rec."%'";
    }
    elseif(($cause_rec == true)&&($etablissement_rec == false)){
    	$req_1 = "WHERE cause LIKE '%".$cause_rec."%'";
    }
    elseif(($cause_rec == true)&&($etablissement_rec == true)){
    	$req_1 = "WHERE cause LIKE '%".$cause_rec."%' AND etablissement LIKE '%".$etablissement_rec."%'";
    }
    else{
    	$req_1 = $req;
    }
     
    $requete_finale = mysql_query("SELECT * FROM infos_tbl ".$req_1." ORDER BY id DESC");
     
    while($dnn = mysql_fetch_array($requete_finale)){
    Mon résultat
    }
    Dans cet exemple, quand je mets chacune de mes requêtes dans le mysql_query ça fonctionne ... le truc bizarre que je n'explique pas, c'est lorsque je fait un ECHO de $req_1 il m'affiche bien la bonne requête en fonction de la condition mais pas de résultat qui s'affiche (sauf pour le IF et le ELSE mais pas pour les ELSEIF)

    Bon je dois trouver la bonne section . Merci de la réponse apportée.

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 103
    Points : 4 449
    Points
    4 449
    Par défaut
    je construirais la requete de cette façon
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql='select ... WHERE 1=1 ';
    if ($condition1)
     $sql.='and champ1 like ... ';
    if ($condition2)
     $sql.='and champ2 like ... ';
    if ($condition3)
     $sql.='and champ3 like ... ';
     
    $sql.=' order by ...';
    echo $sql;
    mysql_query($sql);
    $moi= ( !== ) ? : ;

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci Papajoker, pour la structure ... mais le résultat est le même.

    Par contre, j'ai plus ou moins résolu mon problème qui vient en faite des valeurs de SELECT contenant des accents. Si la valeur n'a pas d'accents, le résultat s'affiche, si elle contient des accents ... nada

    Donc rien avoir finalement avec la requête.
    Considérer comme résolu !

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

Discussions similaires

  1. Filtrage avec datetimepiker (requête SQL)
    Par louay02 dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/04/2011, 11h01
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. [MySQL] Filtrage par ma requête sql en fonction du résultat d'un combo box
    Par digger dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/02/2006, 17h25
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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