OVH Cloud OVH Cloud

utilisation eval

2 réponses
Avatar
J-F Portala
Bonjour,
j'essaie de faire fonctionner la commande eval pour obtenir la chose
suivante:

$strclick = 'return confirm(\' vous allez ($val->test ? devalider : valider)
le donnée $val->donnee\') ;' ;

eval("\$strclick = \"$strclick\";") ; // ne fonctionne pas

le but est de creer un lien sur chaque ligne avec une confirmation
javascript de l'action.
le test sur $val-test permet d'écrire le nom du lien ifferemment

J'ai lu la doc, j'ai fait des recherches mais je n'arrive pas à trouver la
syntaxe correcte.
Je n'ai trouve que l'exemple de la doc et il est assez basique.

merci de votre aide

Jeff

2 réponses

Avatar
Olivier Miakinen

j'essaie de faire fonctionner la commande eval pour obtenir la chose
suivante:

$strclick = 'return confirm(' vous allez ($val->test ? devalider : valider)
le donnée $val->donnee') ;' ;


D'abord, j'aurais écrit « invalider » (où à la rigueur « dévalider »
mais seulement sous la torture) à la place de « devalider ». Et puis
« la » donnée.

eval("$strclick = "$strclick";") ; // ne fonctionne pas


La chaîne stockée et passée en paramètre à eval devrait donc contenir :
« $strclick = "return confirm(' vous allez ($val->test ? devalider :
valider) le donnée $val->donnee')"; »

Bien évidemment cela ne peut pas fonctionner car les tests ne sont pas
interprétés dans les chaînes de caractères.

le but est de creer un lien sur chaque ligne avec une confirmation
javascript de l'action.
le test sur $val-test permet d'écrire le nom du lien ifferemment

J'ai lu la doc, j'ai fait des recherches mais je n'arrive pas à trouver la
syntaxe correcte.


Par exemple :

$strclick = "return confirm('vous allez " . ($val->test ? "in" : "") .
"valider la donnée " . $val->donnee . "')";

Si cela ne convient pas, merci d'expliquer pourquoi. Ceci met fin à
l'émission « expliquez-nous pourquoi vous voulez utiliser eval(), on
vous expliquera comment vous en passer ».

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
J-F Portala
Bonjour,
merci de votre aide.
J'arrive maintenant à utiliser eval bien qu'ayant encore quelques
difficultés avec les ' " $.

Je suis tres intéressé par une autre méthode qu'éval pour réaliser la chose
suivante.

A partir d'une requete mysql, je souhaite réaliser un tableau décrivant les
résultats de la requete.
Ce que j'essaie de faire , c'est de préparer la requete et la description du
tableau à l'avance afin que l'affichage soit géré
automatiquement.

exemple:

$query = "select code,nom,prenom from users where validite =1" ;
j'ai donc créé une classe decrivant chaque colonne resultat de la requete
$elt->add("code","Code") ; le premier argument est le nom de la colonne
dans la requete, le second est le titre de la colonne
$elt->add(nom,"Nom") ;
$elt->add(prenom,"Prénom") ;

J'ai aussi ajouté un format (utile pour les nombres)

Et enfin, a la fin de chaque ligne, je souhaite ajouter des liens qui
permettent de valider/devalider, modifier (renvoie vers un formulaire)
Dans le cas des liens, il faut definir pour chaque ligne un lien intégrant
le code de l'enregistrement à valider ou modifier ou autre.

L'appel a la fonction display de cette classe m'affiche mon tableau avec les
liens, les formats, les noms de colonne, etc.

C'est pourquoi j'essaie de mettre en oeuvre eval(), qui pour moi est
actuellement la seule reponse que j'ai trouvée.

Comment preparer avant de lancer la requete, un lien avec $val->code en
supposant que la boucle de lecture des resultats est du type
foreach ($resultquery as $val)

Jeff
PS: je vais me relire avant d'envoyer un message