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 :

Exécution d'une requête enregistrée dans une table


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut Exécution d'une requête enregistrée dans une table
    Bonjour à tous,

    Mon problème concerne l'enregistrement et l'appel d'une requête depuis une table.

    Une fois l'insert effectué, je souhaite utiliser cette requête de façon dynamique. Je m'explique :

    J'enregistre dans la table 'requete' la requête suivante (dans le champ 'req') :

    SELECT valeur1, valeur2, valeur3 FROM exemple WHERE societe=:param1 AND utilisateur=:param2 AND valide=:param3

    Et les paramètres associés à cette requête, (dans le champ 'param'), à savoir :

    SOCIETE : ID_USER : "A"

    Mon idée : j'ai un modèle (un traitement) contenu dans une page PHP (traitement.php). Ce modèle ne bouge pas. Le seul élément qui diffère est ma requête (et ses paramètres associés). Cf. ci-dessus.

    Je stocke donc chaque requête et ses paramètres dans une table 'requete' dont le modèle est présenté ci-suit, à savoir :

    -----------------------------------------------------------------------------------------------------

    Structure de la table 'requete'
    ------------------
    id | id_user | req | param | date

    Contenu de la table 'requete'
    ------------------
    id
    1
    id_user
    11
    req
    SELECT valeur1, valeur2, valeur3 FROM exemple WHERE societe=:param1 AND utilisateur=:param2 AND valide=:param3
    param
    SOCIETE : ID_USER : "A"
    date
    2015-02-25 14:39:15

    -----------------------------------------------------------------------------------------------------

    Voici mon code afin d'y voir plus clair :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    $ma_requete = $bdd->prepare('SELECT * FROM requete WHERE id_user= :repere');
                        $ma_requete->execute(array(
                            'repere' => $_GET['id'],
                        ));
                        $i = 0;
                        while ($donnees_ma_requete = $ma_requete->fetch()) {
     
                            $requete[$i] = $donnees_ma_requete['req'];
                            $param[$i] = $donnees_ma_requete['param'];
     
                            echo $requete[$i] . "<br>"; // affiche : SELECT valeur1, valeur2, valeur3 FROM exemple WHERE societe=:param1 AND utilisateur=:param2 AND valide=:param3
                            echo $param[$i] . "<br>"; // affiche :  'param1' => SOCIETE ,'param2' => ID_USER ,'param3' => "A",
     
                            $i++;
                        }
     
                        for ($debut = 0; $debut < 1; $debut++) {
     
                            //DEBUT LISTE PARAM
     
                            $s = $param[$debut];
                            $tab = explode(':', $s);
                            $nbre_param = count($tab);
     
                            //FIN LISTE PARAM
     
                            $liste_param[$debut] = "";
     
                            for ($debut_param = 1; $debut_param < $nbre_param + 1; $debut_param++) {
     
                                $valeur[$debut_param] = ExtractChamp($param[$debut], $debut_param, ":"); // extraction des valeurs du champ 'param' avec le séparateur ":"
                                $liste_param[$debut] .= "'param" . $debut_param . "' => $valeur[$debut_param],";
     
                            }
     
                        }
     
                            $reponse[0]->execute();
                            $reponse[0]->execute(array($liste_param[0]));
     
                            while ($result = $reponse[0]->fetch()) {
     
                                 echo $result['valeur1'] . "<br>";
                                 echo $result['valeur2'] . "<br>";
     
                                 // ...........
     
                            }
    Lorsque je lis mon enregistrement, SOCIETE, ID_USER (qui sont des constantes) ne sont pas remplacées ... et ma requête est considérée comme une "simple" chaîne.

    Je suis allé voir du côté de la fonction eval() mais sans succès.

    Auriez-vous une solution à m'apporter ?

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca ne m'etonne pas que tu ne t'en sortes pas car c'est vraiment une usine à gaz que tu fabriques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval('$liste_param["param' . $debut_param . '"] =  ' . $valeur[$debut_param] . ';');

  3. #3
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut
    Merci de ta réponse. Je suis vraiment ignorante mais à quel moment intervient la fonction eval() dans mon code ?

    J'ai ce message d'erreur :
    Parse error: syntax error, unexpected '{' in /home/www/site2/widget.php(235) : eval()'d code on line 1
    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    à la place de ta ligne 34.

  5. #5
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut
    Merci !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/10/2012, 23h50
  2. Réponses: 6
    Dernier message: 31/05/2010, 14h12
  3. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  4. [MySQL] Enregistrement d'une requête SQL dans une base de données MySQL
    Par glsn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/07/2008, 13h06
  5. [Requête] Utilisation d'une fonction perso dans une requête
    Par Julien Dufour dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/03/2007, 09h53

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