[réglé] Exécuter un calcul contenu dans une chaîne (eval ?) - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [réglé] Exécuter un calcul contenu dans une chaîne (eval ?) (/showthread.php?tid=1597) |
[réglé] Exécuter un calcul contenu dans une chaîne (eval ?) - nemesis_elite - 16-08-2007 Bonjour bonjour, A partir de l'administration du jeu, l'admin pourra changer les formules de l'attribution des Point de Vie en fonction des caractéristiques du personnage. Exemple de formule pour les PdV ( je dis nimp ) : 50+(force+constitution-100) Cette formule, est donc une chaine de caractère. Dans le script, je fait juste un petit: Code PHP :
Mais après je ne sais pas comment faire pour l'executer, le code : Code PHP :
Merci d'avance pour l'aide RE: Exécuter une chaîne (eval ?) - joshua - 16-08-2007 un conseil, explique plutot ce que tu veux faire.... Je trouve que ca n'a aps vraiment de sens ecrit comme ca.... En gros tu veux pouvoir enregistrer en base directement les carac des joueurs calculées d'apres uen formule qui peut vairier pendant le temps. Qu'est ce qui peut varier? et comment? RE: Exécuter une chaîne (eval ?) - uriak - 16-08-2007 non, il veut que la base enregistre même la formule de calcul des pv donc la BDD aura : les caracs la formule les utilisant tu as deux solutions pas trop complexes : soit tu généralises tes formules à une formule unique avec des coeddificients variables tu enregistre alors ces coefficients puis tu appliques la formule avec les caracs actuelles soit tu écris quelques types de formule (3-4) en leur donnant un nom particulier HP_comp_1, HP_comp_2 ect dans les stats du persos tu stockes l'identifiant de formule et tu fais $form = 'HP_comp_'.$id_form; et $HP = $form(); avec eventuellement un function_exists() histoire de. soit... (oui trois solutions) tu écris une classe de "parsing" de formule litterale... bonne chance RE: Exécuter une chaîne (eval ?) - nemesis_elite - 16-08-2007 joshua a écrit :explique plutot ce que tu veux faire.... NemeSiS_eliTe a écrit :A partir de l'administration du jeu, l'admin pourra changer les formules de l'attribution des Point de Vie en fonction des caractéristiques du personnage.Donc imaginons que la formule suivante ( qui est stocké dans une bdd ) permette de calculer les Points de Vie d'un personnage : 50+(force+constitution-20) A chaque fois que les caractéristiques change, on va utiliser cette formule, pour recalculer les PdV max du perso. Donc dans le code (avec un perso qui aura force=15 et constitution=12 )on aura ça : Code PHP :
$Pdv = '50+(15+12-20)'; et non pas $Pdv = 57; Je cherche à exécuter le calcul qui est sous forme de chaine de caractère. RE: Exécuter une chaîne (eval ?) - joshua - 16-08-2007 tu fais dans ta formule $force et $constitution et ensuite tu va chercher les valeurs, ca te va pas? RE: Exécuter une chaîne (eval ?) - nemesis_elite - 16-08-2007 Yenhhhh le double-post !!! Pas bien ^^ Sinon, oui je pourrais mettre les variables, mais je ne voulais pas trop mettre de php dans ma bdd. Et puis je pensait que c'était faisable comme ça, avec un eval, ou je ne sais trop quoi. Et puis non, pour le faire en sql. Elle va déjà être très utilisé, alors bon !! Mais merci quand même, mais si quelqu'un troue un autre moyen, n'hésitez pas NemeSiS_eliTe, qui va pas encore mettre le tag [réglé] car on peu faire mieux ^^ RE: Exécuter une chaîne (eval ?) - joshua - 16-08-2007 Honnetement tu te compliques la vie pour rien..... Code PHP :
ca marche ters bien et ca met pas de php en base, juste un $ en plus. En plus c'est beaucoup moins gourmand... RE: Exécuter une chaîne (eval ?) - nemesis_elite - 16-08-2007 jushua a écrit :ca marche ters bienEt bien non, ça ne marche pas, quand je récupère la formule, et que je fait echo, ca m'écrit la formule, et non le résultat ! RE: Exécuter une chaîne (eval ?) - Loetheri - 16-08-2007 Pourquoi n'utilises-tu pas eval ? Bien entendu, c'est le genre de solutions qu'il faut sécuriser assez bien. Mais c'est vrai que j'avoue avoir du mal à comprendre pourquoi tu cherches à coder ce résultat pour le mettre dans ta BD et non directement dans ton code. RE: Exécuter une chaîne (eval ?) - nemesis_elite - 16-08-2007 Peut-tu me dire comment tu fait avec eval ? moi j'y arrive pas. Je veux le mettre dans ma bdd, pour mieux pouvoir changer la formule ! Et ainsi ne pas être obliger de toucher au code à chaque fois. |