Utilisation de eval()

Eléphant du PHP | 52 Messages

11 mai 2007, 10:33

Bonjour tout le monde,

j'ai un formulaire stocké dans ma BDD et je veux l'afficher par un simple echo, en faisant une petite recherche j'ai trouvé que la fonction eval() fait ceci, mais malheureusement j'ai pas pu l'appliquer. :(
Mon formulaire stocké dans la BDD est le suivant :
<form name="frm" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<input type="text" name="txt" value="<?php echo $_POST['txt']; ?>"><br>
<input type="submit" name="submit" value="Submit" >
</form>
Merci poour votre aide.

Eléphant du PHP | 52 Messages

11 mai 2007, 11:31

Est ce que quelqu'un peut m'aider. Je bolque là!! :(

Mammouth du PHP | 1353 Messages

11 mai 2007, 11:54

Qu'as tu essayé pour l'instant ? As tu des messages d'erreur ? As tu lu la doc sur eval() ? Pour avoir une solution mieux vaut poser un probleme... " j'ai pas pu l'appliquer" ne m'aide pas a comprendre face a quelle erreur tu bloques...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 52 Messages

11 mai 2007, 12:14

Merci bien ,

Oui bien sure j'ai lu la documentation de eval() mais elle m'a pas clarifié les choses on a pas le même cas de figure.

En faite j'ai essayé ceci :

$str = "<form name=\"frm\" method=\"POST\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" >
<input type=\"text\" name=\"txt\" value=\"<?php echo $_POST['txt']; ?>\"><br>
<input type=\"submit\" name=\"submit\" value=\"Submit\" >
</form>" ;

eval( "\$str1 = \"$str\" ;" );
echo $str1 ; 

et il m'affiche :

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in



Merci

Mammouth du PHP | 693 Messages

11 mai 2007, 12:31

eval( "\$str1 = \"$str\" ;" );
Ca me parrait pas très catholique. L'anti slash après le premier guillement fait quoi ?

Ensuite, si tu essayais
$str1 =eval($str);

Eléphant du PHP | 52 Messages

11 mai 2007, 12:39

Oui j'ai déjà essayé ça mais ça donne le même message d'erreur :(
Merci.

Mammouth du PHP | 686 Messages

11 mai 2007, 15:01

Il ne te manquerai pas des fonction echo() ou une balise PHP ?
comme ceci :
$str = "<form name=\"frm\" method=\"POST\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" > 
<input type=\"text\" name=\"txt\" value=\"<?php echo $_POST['txt']; ?>\"><br> 
<input type=\"submit\" name=\"submit\" value=\"Submit\" > 
</form>" ; 
<?php
eval( "\$str1 = \"$str\" ;" ); 
echo $str1 ; 
?>

Eléphant du PHP | 52 Messages

11 mai 2007, 15:49

Merci pour la réponse sylvaing26 mais ça ne fonctionne pas, car en faite la variable $str est une chaine stocké dans ma BDD et comme c'est du PHP elle doit être donc entre les balises "<?php" et "?>".

Je crois que je me suis mal exprimé ou peut être je dois poser la question d'une autre mannière.
Comment fait-on pour afficher le formulaire suivant initialement stocké dans une BDD, car forcément il y a un moyen de le faire :

Code : Tout sélectionner

<form name="frm" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" > <input type="text" name="txt" value="<?php echo $_POST['txt']; ?>"><br> <input type="submit" name="submit" value="Submit" > </form>
Merci pour votre aide.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

11 mai 2007, 17:20

$str = "<form name=\"frm\" method=\"POST\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" >
<input type=\"text\" name=\"txt\" value=\"<?php echo $_POST['txt']; ?>\"><br>
<input type=\"submit\" name=\"submit\" value=\"Submit\" >
</form>" ;

eval( "\$str1 = \"$str\" ;echo $str1 ;" );
//il faut mettre le echo aussi dans le eval :)
Ou pourquoi ne pas faire :
$str = "<form name=\"frm\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\" >
<input type=\"text\" name=\"txt\" value=\"".$_POST['txt']."\"><br>
<input type=\"submit\" name=\"submit\" value=\"Submit\" >
</form>" ;

echo $str;
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Invité
Invité n'ayant pas de compte PHPfrance

11 mai 2007, 18:07

Merci mere-teresa pour votre réponse, mais comme même une simple concaténation ne va nous échapper si c'était le cas.
En faite ce formulaire est stocké dans une base de donnée c'est à dire je vais dans un premier temps exécuter une requête
"Select field from Forms where idForms=\"$id\" ; " dans une fonction getForm($id) qui retourne une simple chaine de caractères contenant le formulaire en question, soit :

Code : Tout sélectionner

<form name="frm" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" > <input type="text" name="txt" value="<?php echo $_POST['txt']; ?>"><br> <input type="submit" name="submit" value="Submit" > </form>
.

Et c'est cette chaîne de caractères que je veux afficher et c'est là que le problème persiste Parse error...


Merci pour votre aide :)

Eléphant du PHP | 52 Messages

11 mai 2007, 18:11

Oops!!
Désolé, c'était moi j'ai oublié de m'authentifier. Merci :)

Eléphant du PHP | 52 Messages

12 mai 2007, 10:02

Bonjour tout le monde,

Alors je vous cache pas c'est la galaire depuis hier 8-) , j'ai vu une multitude de message d'erreur pour un simple affichage d'un formulaire contenant deux scripts PHP (oui simple mais c'est la cata de mon coté). En faite je cherche encore une solution pour mon problème et s'il y a pas un tuto pour mieux comprendre cette fonction eval() autre que les quatre lignes du manuelle PHP et autre que "google est ton ami" afin que je puisse avancer dans mon projet.

Merci pour votre aide

lem
Eléphant du PHP | 108 Messages

14 mai 2007, 08:50

Mais euh.. Il n'y a plus d'eval() dans ton code là..
Lem.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

14 mai 2007, 15:06

Peux tu remettre la ou les erreurs que tu as eues ici ?
Peux tu afficher ton code source HTML et le copier / coller ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.