Page 1 sur 1
Trop de mal avec eval()
Posté : 12 juin 2007, 10:43
par jed
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?
Posté : 12 juin 2007, 11:16
par zigz4g
Je ne comprend pas bien le rapport avec PHP ? C'est bien du javascript que tu veux faire ?
Posté : 12 juin 2007, 11:19
par jed
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.
Posté : 12 juin 2007, 11:21
par zigz4g
Peut etre en utilisant addslashes() te garantirait d'avoir tes parametres correctements passés à ta fonction javascript.
Posté : 12 juin 2007, 11:24
par jed
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]
Posté : 12 juin 2007, 11:30
par zigz4g
<?php
echo "<a href=\"javascript : ajout_competences ('$competence->id', '$competence->nom')\">ajouter</a>";
?>
Et comme cela ?
Posté : 12 juin 2007, 11:35
par jed
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')"...

Posté : 12 juin 2007, 11:40
par jed
J'ai mis une checkbox à la place d'un lien direct et tout fonctionne correctement. Merci!
Posté : 12 juin 2007, 11:46
par zigz4g
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.