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 :

code php dans une variable chaine php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut code php dans une variable chaine php
    bonjour je voudrais mettre tout ça dans une chaine pour l'utiliser ensuite avec eval mais j'y arrive pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <tr><td>Equipement</td><td><select name="equipement">
    <?php
    $req_interv = mysql_query("SELECT * FROM T_UTIL WHERE mat_util IN  (SELECT mat_util FROM tj_util_serv AS x WHERE no_serv = 2 AND date_entree = (SELECT MAX(date_entree) FROM tj_util_serv WHERE x.mat_util = mat_util GROUP BY mat_util))");
    $nb_interv = mysql_numrows($req_interv);
    //Construction de la liste des intervenants
    for ($i=0;$i<$nb_interv;$i++)
    { 
      $nom_interv = mysql_result($req_interv,$i,"nom_util");
      $pren_interv = mysql_result($req_interv,$i,"pren_util");
      echo "<option value=$mat_util> $pren_interv . $nom_interv </option>";
    }
    ?>
    j'ai sans arret des parse error quoi que je fasse

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Tout ça quoi

    Montre nous ce que tu as déjà essayé on verra...

    Pour les parse error :
    http://php.developpez.com/faq/?page=...ur_parse_error
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    j'en ai fait des combinaisons
    j'ai procédé par concaténations
    les variables php je les met hors cotes genre 'blablabla' . $variable . 'blabla....'
    en fait je m'embrouille surtout avec les ' et les "

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Oui eh bien donne le code de ton essai on verra après ce qu'on peut faire.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    j'ai ça par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $chaine = "echo \"<tr><td>NOM</td><td><select name=\"equipement\">\"" . "\n";
    $chaine .= "$req_interv = mysql_query(\"SELECT * FROM T_UTIL WHERE mat_util IN  (SELECT mat_util FROM tj_util_serv AS x WHERE no_serv = 2 AND date_entree = (SELECT MAX(date_entree) FROM tj_util_serv WHERE x.mat_util = mat_util GROUP BY mat_util))\");" . "\n";
    $chaine .= "$nb_interv = mysql_numrows(" . $req_interv . ");" . "\n";
    //Construction de la liste des intervenants
    $chaine .= "for ($i=0;$i<" . $nb_interv . ";$i++)" . "\n";
    $chaine .= "{" . "\n";
    $chaine .= "$nom_interv = mysql_result(" . $req_interv . "," . $i . ",\"nom_util\");" . "\n";
    $chaine .= "$pren_interv = mysql_result(" . $req_interv . "," . $i . ",\"pren_util\");" . "\n";
    $chaine .= "echo \"<option value=" . $mat_util . ">" . $pren_interv . $nom_interv . "</option>\";" . "\n";
    $chaine .= "}";
     
    eval($chaine);
    echo $chaine;
    qui me donne comme résultat dans le code source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <br />
    <b>Parse error</b>:  parse error, expecting `','' or `';'' in <b>c:\program files\easyphp1-8\www\di\consultation\consult_di.php(264) : eval()'d code</b> on line <b>1</b><br />
    echo "<tr><td>NOM</td><td><select name="equipement">"
    Resource id #6 = mysql_query("SELECT * FROM T_UTIL WHERE mat_util IN  (SELECT mat_util FROM tj_util_serv AS x WHERE no_serv = 2 AND date_entree = (SELECT MAX(date_entree) FROM tj_util_serv WHERE x.mat_util = mat_util GROUP BY mat_util))");
    5 = mysql_numrows(Resource id #6);
    for (-1=0;-1<5;-1++)
    {
     = mysql_result(Resource id #6,-1,"nom_util");
     = mysql_result(Resource id #6,-1,"pren_util");
    echo "<option value=3></option>";
    }
    j'ai bien ma liste déroulante qui se crée avec le nom devant mais elle est vide

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Il est peut-être préférable de jouer avec les quotes et les guillemets, essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $chaine = 'echo "<tr><td>NOM</td><td><select name=\'equipement\'>;' . '\n';
    $chaine .= '$req_interv = mysql_query("SELECT * FROM T_UTIL WHERE mat_util IN  (SELECT mat_util FROM tj_util_serv AS x WHERE no_serv = 2 AND date_entree = (SELECT MAX(date_entree) FROM tj_util_serv WHERE x.mat_util = mat_util GROUP BY mat_util))");' . '\n';
    $chaine .= '$nb_interv = mysql_numrows(' . $req_interv . ');' . '\n';
    //Construction de la liste des intervenants
    $chaine .= 'for ($i=0;$i<' . $nb_interv . ';$i++)' . '\n';
    $chaine .= '{' . '\n';
    $chaine .= '$nom_interv = mysql_result(' . $req_interv . ',' . $i . ',"nom_util");' . '\n';
    $chaine .= '$pren_interv = mysql_result(' . $req_interv . ',' . $i . ',"pren_util");' . '\n';
    $chaine .= 'echo "<option value=' . $mat_util . '>' . $pren_interv . $nom_interv . '</option>";' . '\n';
    $chaine .= "}";
    Ca marchera sûrement pas mais ça va peut-être faire avancer le truc un peu.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    ça donne ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <br />
    <b>Parse error</b>:  parse error, expecting `','' or `';'' in <b>c:\program files\easyphp1-8\www\di\consultation\consult_di.php(263) : eval()'d code</b> on line <b>1</b><br />
    echo "<tr><td>NOM</td><td><select name='equipement'>;\n$req_interv = mysql_query("SELECT * FROM T_UTIL WHERE mat_util IN  (SELECT mat_util FROM tj_util_serv AS x WHERE no_serv = 2 AND date_entree = (SELECT MAX(date_entree) FROM tj_util_serv WHERE x.mat_util = mat_util GROUP BY mat_util))");\n$nb_interv = mysql_numrows(Resource id #6);\nfor ($i=0;$i<5;$i++)\n{\n$nom_interv = mysql_result(Resource id #6,-1,"nom_util");\n$pren_interv = mysql_result(Resource id #6,-1,"pren_util");\necho "<option value=3></option>";\n}

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Nouvelle version à tester (les \n posent problème) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $chaine = 'echo "<tr><td>NOM</td><td><select name=\'equipement\'>;';
    $chaine .= '$req_interv = mysql_query("SELECT * FROM T_UTIL WHERE mat_util IN  (SELECT mat_util FROM tj_util_serv AS x WHERE no_serv = 2 AND date_entree = (SELECT MAX(date_entree) FROM tj_util_serv WHERE x.mat_util = mat_util GROUP BY mat_util))");';
    $chaine .= '$nb_interv = mysql_numrows(' . $req_interv . ');';
    //Construction de la liste des intervenants
    $chaine .= 'for ($i=0;$i<' . $nb_interv . ';$i++)';
    $chaine .= '{';
    $chaine .= '$nom_interv = mysql_result(' . $req_interv . ',' . $i . ',"nom_util");';
    $chaine .= '$pren_interv = mysql_result(' . $req_interv . ',' . $i . ',"pren_util");';
    $chaine .= 'echo "<option value=' . $mat_util . '>' . $pren_interv . $nom_interv . '</option>";';
    $chaine .= '}';
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  9. #9
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Salut,

    Jwhite : ton '\n' ne donneras rien. Pour que \n soit reconnu comme un retour chariot, il faut le mettre entre guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Chaine = 'bla bla ' . $variable . 'bla bla' . "\n";
    De plus, si tu mets une variable $toto dans une chaine avec des guillements, elle est remplacée par sa valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $toto = 5;
    $Chaine = "Voici $toto";
    echo $chaine;
    // affichera : Voici 5
    Alors qu'entre apostrophe, elle est considérée comme du texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $toto = 5;
    $Chaine = 'Voici $toto';
    echo $chaine;
    // affichera : Voici $toto
    // Alors que
    $Chaine = 'Voici ' . $toto;
    echo $chaine;
    // affichera : Voici 5
    unmulot : Tu veux faire quoi exactement ? Créer une chaine contenant du php ou créer une balise <SELECT> à partir de php ?
    Sachant que l'ensemble des infos du SELECT peuvent être stockées dans une chaine.

    De plus, es-tu certain que les chaines de caractères qui proviennent de ta base ne contiennent pas d'apostrophe ou de guillemet ?

    Evite le "SELECT * ...", c'est très lourd en ressources surtout si tu n'as besoin que de quelques champs

    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  10. #10
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par JWhite
    Nouvelle version à tester (les \n posent problème)
    Petit croisement dans les posts
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    tjs pareil
    ce que je veux c'est paramétrer l'affichage d'une demande d'intervention en fonction de l'utilisateur conencté

    aisi pour le champ intervenant, si l'utilisateur est un appelant il verra juste le nom de l'intervenant prévu
    par contre si c'est un intervenant il verra une liste déroulante des intervenants afin de pouvoir en sélectionner un

    pour construire la liste il faut récupérer la liste dans la table (codage en php)
    avoir un select (html) pour la liste déroulante et les option value

    donc la chaine que je veux créer contient du html et du php
    j'ai fait ça pour d'autres champs sans problèmes sans même avoir à utiliser eval
    sauf qu'il y avait pas de requêtes ni de boucle for et principalement du codage html avec quelques variables php

    mais pour celle où je bloque c visiblement plus hardu !
    poil au ....


    ps : les chaines provenant de ma base ne contiennent pas de ' ni de " sinon j'aurai eu des syntax error

    aufait, j'utilise easyphp 1.8 et mysql 4.1.9

  12. #12
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Ce que je ne pige pas c'est pourquoi mettre ce code dans une chaine ?

    Pourquoi ne pas construire ton SELECT ou le CHAMP à la volée :
    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
     
    if($intervenant)
    {
       $req = 'SELECT...[Ma requete SQL pour un intervenant]...';
       $rs = mysql_query($req)...;
       ...
       echo '<select name="liste"...' . "\n";
       while($ligne = mysql_fetch_array($rs))
          echo '<option...>' . $ligne['champX'] . '</option>' . "\n";
       echo '</select>' . "\n";
    }
    else      // appelant
    {
       $req = 'SELECT...[Ma requete SQL pour récupérer le nom de l' intervenant]...';
       $rs = mysql_query($req)...;
       ...
       echo '<input type="texte" name="nom_intervenant" value="' . $ligne['champX'] . ' />' . "\n";
    }
    @mysql_free_result($rs);
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  13. #13
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Il me semble que ce soit complexe vraiment pour rien

    J'ai une application que je gere l'affichage par rapport au type d'usager identifier
    et comme le suggère Ricou13 une simple validation du type avant de faire l'affichage semble plus logique non??

    car la t'as une chaine super longue ou il y a une probleme avec les guillemets et double guillemets dont a l'intérieur ya du html, variable php, requete mysql et affichage de la requete...

    Deplus je suis du meme avis, pour le SELECT *...si tu n'as pas besoin de tous les champs ne l'utilise pas
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    bonjour
    ben oui c comme ça que j'ai solutionné en déclarant les champs à la volée en fonction du type d'utilisateur
    merci quand même pour votre aide depuis que je viens sur ce site j'ai vraiment bien avancé grace à la générosité et à la patience de gens comme vous
    bonne journée à tous et bon courage pour répondre à des tordus comme moi

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

Discussions similaires

  1. Stockage code php dans une variable
    Par shafte09 dans le forum Langage
    Réponses: 5
    Dernier message: 02/02/2009, 01h11
  2. Mettre du code php dans une variable
    Par JohnBrown011 dans le forum Langage
    Réponses: 2
    Dernier message: 19/05/2008, 13h33
  3. [Tableaux] Insérer script php dans une variable
    Par Hydrae dans le forum Langage
    Réponses: 4
    Dernier message: 27/09/2007, 21h35
  4. recuperer la valeur d'une session PHP dans une variable javascript
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2006, 18h33
  5. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2005, 12h55

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