Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1872 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP][SMARTY] Construire un nom de variable à la volé avec eval et cat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP][SMARTY] Construire un nom de variable à la volé avec eval et cat

n°1791165
bilbot
Posté le 24-09-2008 à 09:15:03  profilanswer
 

Bonjour a tous ,
 
Je vous soumets un petit problème que je rencontre avec smarty. Pour résumer la fonctionnalité de la page, elle est composée d'une zone répétée qui affiche des informations sur x article, mais il y a également de la saisie (pour chaque article zone de saisie texte, radio bouton...) . Ces articles sont repéré par un id, a l'affichage c'est cet id qui me permet de construire le nom de mon champ pour le récupérer dans mon post :
 

Code :
  1. <textarea name="commentaire_{$id_article}" rows="4" cols="30" >{ assign var='texte' value = '$erreur.avis_'|cat:$id_article}{eval var=$texte}</textarea>


 
lorsque l'utilisateur valide les données, coté serveur je vérifie que les saisies sont correcte si c'est ok j'enregistre en base sinon je raffiche la même page avec les données précédemment saisies et c'est cette partie qui me pose problème. je construis le nom de la variable qui contient mon texte et après j'utilise le résultat dans la fonction eval pour afficher le texte proprement dit mais ça ne marche pas :
 

Code :
  1. { assign var='texte' value = '$erreur.avis_'|cat:$id_article}

->  j'arrive bien a assigner  ''$erreur.avis_1" à ma variable smarty $texte pour l'id valant 1
 
toutes les données sont sotckées dans le tableau associatif de la manière suivante :  erreur['avis_1'] = "mon texte que je  veux afficher" ou erreur['radio_1']= 'A'   (dans ce cas ci j'ai des données pour l'article avec id=1 : un radio  et une zone texte)
 

Code :
  1. {eval var=$texte}


par contre ici je n'arrive pas a éxectuer le code contenu dans la variable $texte, en fait dans ma zone texte, ca m'affiche : ''$erreur.avis_1" j'ai l'impression que la fonction eval est tout simplement ignorée.  
 
N'étant pas expert smarty, j ne sais pas si je fais une faute dans mon raisonnement ou si ce n'est tout simplement pas possible a réaliser... pourtant l'exemple ici en fin de page : http://smarty.net/manual/fr/language.function.eval.php , me laisse penser que si  
 
Si vous avez un avis sur la question, je suis preneur.

Message cité 1 fois
Message édité par bilbot le 24-09-2008 à 10:36:21
mood
Publicité
Posté le 24-09-2008 à 09:15:03  profilanswer
 

n°1791184
skeye
Posté le 24-09-2008 à 10:15:59  profilanswer
 

bilbot a écrit :

Si vous avez un avis sur la question, je suis preneur.


 
J'ai lu en diagonale, mais mon avis est que tu dois pouvoir remplacer ces horreurs par des tableaux.


---------------
Can't buy what I want because it's free -
n°1791194
bilbot
Posté le 24-09-2008 à 10:27:40  profilanswer
 

oui toutes les infos sont stockées dans des tableaux, d'ailleurs la syntaxe smarty le montre bien


Message édité par bilbot le 24-09-2008 à 10:28:30
n°1791202
skeye
Posté le 24-09-2008 à 10:34:28  profilanswer
 

Tu ne vas pas assez loin dans ce sens. Construire le nom des champs de manière dynamique comme tu le fais est un mauvais choix.
Arrange-toi pour pouvoir écrire quelque chose de ce genre :
 

Code :
  1. <textarea name="commentaire[{$id_article}]" rows="4" cols="30" >{$erreur.avis.$id_article}</textarea>


---------------
Can't buy what I want because it's free -
n°1791210
bilbot
Posté le 24-09-2008 à 10:46:48  profilanswer
 

effectivement c'est une solution plus simple et qui marche.
 
Merci de ton aide. Par conte eval ne fonctionne pas pour des chaines de caractères construite dans le template, c'est bien dommage.

n°1791240
skeye
Posté le 24-09-2008 à 11:23:52  profilanswer
 

bilbot a écrit :

effectivement c'est une solution plus simple et qui marche.
 
Merci de ton aide. Par conte eval ne fonctionne pas pour des chaines de caractères construite dans le template, c'est bien dommage.


eval ne devrait jamais être utilisé. Il ne m'est arrivé qu'une fois de ne pas pouvoir le remplacer par autre chose de plus propre.


---------------
Can't buy what I want because it's free -
n°1791258
bilbot
Posté le 24-09-2008 à 11:39:10  profilanswer
 

ok mais pourquoi ils ont foutu cette fonction si ca ne devrait jamais etre utilisé ?
 
Sinon trainoo tu l'as developpé avec smarty ? t'as utilisé un framework ?

n°1791261
skeye
Posté le 24-09-2008 à 11:45:29  profilanswer
 

bilbot a écrit :

ok mais pourquoi ils ont foutu cette fonction si ca ne devrait jamais etre utilisé ?

 

php est plein de conneries qu'il vaut mieux éviter d'utiliser si on veut garder du code propre et une certaine santé mentale.

 
bilbot a écrit :

Sinon trainoo tu l'as developpé avec smarty ? t'as utilisé un framework ?

 

Trainoo c'est pas moi, et c'est du java.

 

Personnellement oui, je travaille avec smarty, mais sans framework.


Message édité par skeye le 24-09-2008 à 11:45:38

---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP][SMARTY] Construire un nom de variable à la volé avec eval et cat

 

Sujets relatifs
Balise <form> qui ne renvoie rien à mon script PHP[PHP] Requete sql avec virgules
[PHP + PDF] Insérer un filigranePHP: Une commande pour parcourir un tableau...
simple question de type de variableprobleme de transmission de variable js/php
[php]Insérer une table dans une autre table en fonction d'une variable[DOS] Enregistrer un fichier avec un nom variable
Problème avec PHP photo moduleRecuperer les informations du formualaire en PHP
Plus de sujets relatifs à : [PHP][SMARTY] Construire un nom de variable à la volé avec eval et cat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR