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 confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    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
    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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    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
    Par d�faut
    Oui eh bien donne le code de ton essai on verra apr�s ce qu'on peut faire.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    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
    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.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    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
    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 .= '}';

  9. #9
    Membre confirm� Avatar de Ricou13
    Inscrit en
    Ao�t 2002
    Messages
    292
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 292
    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


  10. #10
    Membre confirm� Avatar de Ricou13
    Inscrit en
    Ao�t 2002
    Messages
    292
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 292
    Par d�faut
    Citation Envoy� par JWhite
    Nouvelle version � tester (les \n posent probl�me)
    Petit croisement dans les posts

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    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 confirm� Avatar de Ricou13
    Inscrit en
    Ao�t 2002
    Messages
    292
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 292
    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);

  13. #13
    Membre �m�rite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    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