100% bloqué: Comment appliquer un EVAL là-dessus?

Lorange
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 12:23

J'ai la variable suivante:

Code : Tout sélectionner

$nom = htmlspecialchars($result["cat_name_trans"]);
Je dois y appliquer la fonction eval. J'ai essayé (parmi tant d'autres choses):

Code : Tout sélectionner

$nom = eval(htmlspecialchars($result["cat_name_trans"]));
Mais cela ne fonctionne pas.

Qui pourrait me débloquer? Je suis desssus depuis plus d'une heure!

Mammouth du PHP | 568 Messages

28 févr. 2006, 12:29

Code : Tout sélectionner

$nom = eval(htmlspecialchars(\$result["cat_name_trans"]));
ou

Code : Tout sélectionner

$nom = eval(htmlspecialchars(\$result[\"cat_name_trans\"]));
Je dirais...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 12:58

Aucun des deux ne fonctionne.

Le deuxième affiche une page blanche.

Avec le premier, la page s'affiche, mais rien ne s'affiche à la place de l'eval.

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:00

Notez que si je fais:

Code : Tout sélectionner

<?php eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";'); ?>
Cela fonctionne. Mais je dois associer cela à ma variable $nom

Mammouth du PHP | 568 Messages

28 févr. 2006, 13:04

Dans ce cas :
eval("\$nom=htmlspecialchars(\$result[\"cat_name_trans\"]);");

Je pense que ça devrait être bon...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:16

Il affiche maintenant :

$w[691] => $w[920]

Autrement dit, il n'a pas appliqué l'eval.

Je vais devenir fou!

Mammouth du PHP | 568 Messages

28 févr. 2006, 13:21

Si tu exécutes la ligne :
$nom=htmlspecialchars($result["cat_name_trans"]);

Ca te donne ton résultat ?

(Mais au fait, pourquoi utiliser eval() ?) :oops:
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:31

En fait, j'ai des portions de codes php contenues dans des bases de données. C'est assez compliqué à vrai dire. Il faut donc que ces portions soient interprétées comme étant du code php.

Je suis parvenu à mes fins sur d'autres pages en faisant:

Code : Tout sélectionner

<?php eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";'); ?>

Et alors, au lieu de m'afficher le code contenu dans la base, par exemple:

Code : Tout sélectionner

$w[609] $w[610]
Ca m'affiche

Europe France

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

Donc j'ai ceci qui fonctionne:

Code : Tout sélectionner

<?php eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";'); ?>
Je veux simplement le mettre dans ma variable nom. Mais cela ne fonctionne plus. Ca doit être un problème de syntaxe. Mais je planche.

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:31

Si tu exécutes la ligne :
$nom=htmlspecialchars($result["cat_name_trans"]);

Ca te donne ton résultat ?

(Mais au fait, pourquoi utiliser eval() ?) :oops:
OUi ca m'affiche le code php tel quel contenu dans la base

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:39

Si je fais:

Code : Tout sélectionner

eval('echo "'.$nom=htmlspecialchars($result["cat_name_trans"]).'";');
Ca fonctionne aussi mais cela affiche directement le resultat sur la page alors que je souhaite simplement le mettre dans la variable.

Mammouth du PHP | 568 Messages

28 févr. 2006, 13:46

Si tu exécutes la ligne :
$nom=htmlspecialchars($result["cat_name_trans"]);

Ca te donne ton résultat ?

(Mais au fait, pourquoi utiliser eval() ?) :oops:
OUi ca m'affiche le code php tel quel contenu dans la base
Et bin c'est bon alors ? je comprends de moins en moins ce qui ne vas pas :roll:
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 13:52

Si je fais

Code : Tout sélectionner

$nom=htmlspecialchars($result["cat_name_trans"]); echo $nom
J'obtiens sur ma page: "$[609] $[610]"

Or, je devrais obtenir "Europe France"

Il faut que $[609] $[610] soit interpreté comme du code PHP, d'où le recours à la fonction eval.

----

Si je fais

Code : Tout sélectionner

eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";');
cela fonctionne. J'obtiens sur ma page : "Europe France" (non plus "$[609] $[610]")


Mais moi, je ne veux plus faire d'echo. Je veux stocker cela dans une variable $nom

Et c'est là que je m'embrouille probablement dans les guillements. J'aimerais une variable $nom qui stocke la valeur du echo fait plus haut.

Lorange
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 14:04

J'ai trouvé!!

Code : Tout sélectionner

eval('$nom='.htmlspecialchars($result["cat_name_trans"]).';');
Merci pour ton aide... tu m'as mis sur la voie! :D

Mammouth du PHP | 568 Messages

28 févr. 2006, 14:05

eval('\$nom='.htmlspecialchars($result["cat_name_trans"]).';');
J'y crois à mort ce coup ci !
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 14:16

Oui avec le slash renversé ou sans ça fonctionne.

Merci encore pour tes tuyaux!