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ête SQL en lien avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 41
    Par défaut Requête SQL en lien avec PHP
    Bonjour à tous et encore merci pour tous ceux qui répondent à nos question !

    Mon objectif est de filtrer une requête en fonction d'une liste déroulante. Les utilisateurs peuvent sélectionner un élément de la liste ou la valeur -Toutes- (valeur = 0 ) pour ne pas filtrer le champ. Je recupère la valeur sur un GET ($_GET['saison_cyne']) .

    Ensuite si la valeur est 0, pas de filtre donc j'affecte le nom du champs comme clause where sinon la valeur sélectionnée par l'utilisateur (string).
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $_GET['saison_cyne'] == 0 ) { $_f_saison =  'administratif.ancyne(b_prele_date)'  ;  }  else {   $_f_saison = $_GET['saison_cyne'] ; }
    et voilà ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         $req = $pdo -> query (" SELECT id_fiche,administratif.ancyne(b_prele_date) as ancyne FROM prelevement.base 
                                                                    WHERE administratif.ancyne(b_prele_date) = '$_f_saison' ;");
    Mais problème ;
    si je mets dans la clause where

    administratif.ancyne(b_prele_date) = '$_f_saison' => ça fonctionne si l'utilisateur a fait un choix et pas quand je remplace par le nom du champ

    administratif.ancyne(b_prele_date) = $_f_saison => ça fonctionne si je remplace par le nom du champ et pas si l'utilisateur à fait un choix de filtre

    Alors là je sèche ! Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 633
    Par défaut
    Citation Envoyé par micakel_53 Voir le message
    administratif.ancyne(b_prele_date) = '$_f_saison' => ça fonctionne si l'utilisateur a fait un choix et pas quand je remplace par le nom du champ
    c'est normal parce que dans le cas ou il faut afficher toute les valeurs, vous avez comme résultat administratif.ancyne(b_prele_date) = 'administratif.ancyne(b_prele_date)'

    le souci dans la construction de votre requête est que l'utilisation d'une donnée extérieure peut aboutir à une injection sql. donc dans ce cas, vous devez passer par une requête préparée
    https://www.php.net/manual/fr/pdo.pr...statements.php

    et cela donne quelque chose de ce genre

    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 ("0" === $_GET['saison_cyne']) {
     
    	$req = $pdo->query("
    		SELECT id_fiche, administratif.ancyne(b_prele_date) as ancyne
    		FROM prelevement.base
    		WHERE administratif.ancyne(b_prele_date) = administratif.ancyne(b_prele_date);
    	");
     
    } else {
     
    	$req = $pdo->prepare("
    		SELECT id_fiche, administratif.ancyne(b_prele_date) as ancyne
    		FROM prelevement.base
    		WHERE administratif.ancyne(b_prele_date) = ?;
    	");
     
    	$req->execute([$_GET['saison_cyne']]);
     
    }
     
     
    // ici vous utilisez $req comme avant

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 41
    Par défaut
    Bonjour Mathieu et merci pour votre réponse,
    C'est bien noté pour l'injection sql je vais passer par une requête préparée.
    Le souci avec votre solution, c'est que j'ai une bonne dizaine de listes déroulantes, je ne peux donc difficilement faire un if pour chaque situation. J'aimerai générer une seule requête qui s'adapte aux listes de choix, mais pour le moment je n'ai pas de solution.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 633
    Par défaut
    il y a toujours des boucles ... euh des solutions pour factoriser du code ;-)

    montrez nous ce que vous faites actuellement avec 2 ou 3 listes.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 41
    Par défaut
    Bonjour,
    Déjà dsl pour ma réponse tardive.
    J'ai mis en place ta proposition en faisant des boucles avec des requêtes préparées et ça fonctionne c'est juste un peu plus long à mettre en place.
    Encore merci pour votre réponse.
    Mickaël

Discussions similaires

  1. [MySQL] Balise HTML <a href=".. avec requête SQL en lien ?
    Par mauriiice dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/05/2009, 16h17
  2. problèmes requête sql, dont lien avec la valeur d'un textbox
    Par Drone dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 12/02/2009, 17h28
  3. [Requête/SQL]Mise à jour avec condition
    Par atlantideD dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 22/04/2007, 23h14
  4. [MySQL] requête sql vers excel en php
    Par jenny06 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 20/04/2007, 11h27
  5. [SQL] Traitement de plusieurs requêtes .SQL dans un script PHP?
    Par M4x dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/03/2006, 19h59

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