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

Langage PHP Discussion :

Incorporation d'une variable dans la récupération d'une requête SQL


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Incorporation d'une variable dans la récupération d'une requête SQL
    Bonjour à tous !

    comme le titre l'indique (ou pas), j'aurai besoin d'aide pour un code php/sql
    Je suis en train de créer un site et j'ai besoin de faire un champs de recherche personnalisé. Je récupère donc le nom de mes champs dans des variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $select = "nom_de_la_table.nom_champs1, nom_de_la_table.nom_champs2..."
    $where = "nom_de_la_table.nom_champs1 = 'toto', nom_de_la_table.nom_champs2='titi'..."
    Lorsque j'exécute ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req=mysql_query ('select "'.$select.'" from table1, table2 where "'.$where.'"') or die ("requete impossible !");
    elle s'exécute sans problème. Par contre, je n'arrive pas a récupérer le résultat.
    Je m'explique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $ligne= mysql_fetch_array($req);
    $res=$ligne["$select"];
     
    $req2=mysql_query ("select nom_de_champs from table_concerné where nom_de_champs='titi'") or die ("requete impossible !");					
    $ligne2= mysql_fetch_array($req2);
    $res2=$ligne2['nom_champs_1'];
     
    echo "res: $res <br/>";
    echo "res2: $res2";
    La requête $req2 est en tout point identique à celle faite par les variables $select et $where.

    J'obtiens alors un résultat pour $res2 et aucun pour $res...
    Dans le test que j'ai fais, il n'y a qu'un seul champs dans le $select.
    Si quelqu'un peut m'aider, je vous en serai très reconnaissante !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Enlève les les guillemets dans ta requête $req autour de tes variables $select et $where.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci pour la réponse mais ça ne marche pas sans. La requête plante. De plus, je récupère un résultat dans $req mais je n'arrive pas à l'extraire...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Ta requete plante si tu enlève les guillemets parce que dans ta variable $where tu utilise des apostrophes autour de tes valeurs. Je pense qu'il te suffit d'échapper ces apostrophes (\') pour que si tu enlève les guillemets la requete ne plante plus.

    En ce qui concerne ton problème de récupération des résultats de la requête $req, il faut que tu remplace le $select de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = $ligne["$select"];
    par le nom du champ que tu veux récupére, comme tu le fais avec la requête $req2

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Donc tu pense qu'il n'existe pas de moyen générique pour récupérer la variable et qu'il faut que je fasse du cas par cas, c'est ça ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Je ne comprends pas trop ce que tu veux faire.

    Parce que si tu veux récupérer l'ensemble des champs dans une variable, utilise mysql_fetch_assoc au lieu de mysql_fetch_array, et ta variables $ligne les contiendra sous forme d'un tableau associatif.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Le problème, c'est que dans le test que j'ai fais, $select ne contient qu'un nom de champs, et donc,

    $res=$ligne["$select"];

    devrait revenir a :

    $res2=$ligne2['nom_champs_1'];

    Par contre, par la suite, $select contiendra plusieurs nom de champs mais je faisais juste un test simple pour voir si ça fonctionnait.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    D'accord, mais le problème de ton select c'est qu'il est de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "nom_de_la_table.nom_de_champ";
    Alors que pour récupérer les enregistrement il faut juste le nom du champ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = $ligne['nom_de_champ'];
    Donc ça ne peut pas marcher où alors il faut que tu enlèves ton nom de table dans la variables $select.

    Par contre, s'il y a plusieurs champs dans ton select, là tu ne pourras plus faire ça. Il te faudra faire chaque champ un par un.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour ton temps et tes réponses. Si je remplace mon $select par le bon nom de champs, ça marche; du coup, je pense le faire au cas par cas.
    Encore merci !

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

Discussions similaires

  1. insérer une variable dans le nom d'une variable
    Par leninelenine dans le forum Général Python
    Réponses: 11
    Dernier message: 28/05/2015, 08h25
  2. Mettre une variable dans l'appel d'une variable de session
    Par PrinceMaster77 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2011, 10h12
  3. Récupération d'une variable dans un lien
    Par Meloooo dans le forum Langage
    Réponses: 6
    Dernier message: 19/05/2009, 23h49
  4. [Dates] Récupération d'une variable dans whois ndd
    Par Arawn94 dans le forum Langage
    Réponses: 12
    Dernier message: 07/06/2007, 14h54
  5. Réponses: 3
    Dernier message: 29/05/2006, 23h46

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