Trop de mal avec eval()

jed
Eléphant du PHP | 218 Messages

12 juin 2007, 10:43

Bonjour, je n'ai jamais vraiment bien compris l'intérêt de cette fonction qui m'a toujours paru "abstraite" et peu utile. Mais aujourd'hui je sui sface à un problème et je crois que seule cette fonction peut me tirer d'affaire: je dois passer comme argument à une fontion javascript des variables php. Or il s'avère que je n'arrive pas à traiter ces variables comme chaines de caractères. J'ai donc pensé à eval() qui pourrait je pense permettre de passer comme paramètre à cette fonction le contenu même de la variable. Helas j'ai beaucoup de mal à me servir de cette fonction et je n'arrive pas à évaluer cette chaîne:
eval ("\$link = \"<a href=\"javascript : ajout_competences ('\$competence->id\', '\$competence->nom\')\">ajouter</a>\";");
Pouvez vous m'indiquer l'erreur svp?

Mammouth du PHP | 684 Messages

12 juin 2007, 11:16

Je ne comprend pas bien le rapport avec PHP ? C'est bien du javascript que tu veux faire ?
Zigz4g

jed
Eléphant du PHP | 218 Messages

12 juin 2007, 11:19

Et bien le rapport avec php, c'est que je dois passer des variables en paramètres que javascript ne conscidère pas comme chaînes de caractères. Il faut donc que je trouve un moyen d'échapper mes variables php lors de l'appel de ma fonction.

Mammouth du PHP | 684 Messages

12 juin 2007, 11:21

Peut etre en utilisant addslashes() te garantirait d'avoir tes parametres correctements passés à ta fonction javascript.
Zigz4g

jed
Eléphant du PHP | 218 Messages

12 juin 2007, 11:24

Helas non, j'ai essayé avec addslashes et même en remplaçant les espaces, car voici l'erreur retourné par la console js:
Erreur : missing ) after argument list
Fichier source : javascript:ajout_competences (1, conna%C3%AEtre les groupes des verbes)
Ligne : 1, Colonne : 32
Code source :
ajout_competences (1, connaître les groupes des verbes)
En fait je n'arrive pas à entourer de quotes l'expression que je dois passer en argument.[/code]

Mammouth du PHP | 684 Messages

12 juin 2007, 11:30

<?php
echo "<a href=\"javascript : ajout_competences ('$competence->id', '$competence->nom')\">ajouter</a>";
?>
Et comme cela ?
Zigz4g

jed
Eléphant du PHP | 218 Messages

12 juin 2007, 11:35

Il y a du progrès: la chaîne est bien entouré de quotes maintenant mais il essaye de m'envoyer la page "javascript : ajout_competences ('2', 'conjuguer les verbes aux temps simples et composés de l'indicatif')"... :(

jed
Eléphant du PHP | 218 Messages

12 juin 2007, 11:40

J'ai mis une checkbox à la place d'un lien direct et tout fonctionne correctement. Merci!

Mammouth du PHP | 684 Messages

12 juin 2007, 11:46

Mea culpa.

J'ai chercher a corriger le probleme des quotes sans meme voir le probleme de ton code.
En meme temps j'ai resolu ton probleme :)

Bon en gros la c'est bien du Javascript dont on parle et faudrait faire un truc du genre :
echo "<a href=\"#\" onclick=\"javascript : ajout_competences ('$competence->id', '$competence->nom');\">ajouter</a>";
Ca doit etre mieux ainsi.
Zigz4g