[RESOLU] Utilisation d'une opération php stockée dans une DB mysql

Eléphant du PHP | 105 Messages

09 févr. 2018, 04:06

Hello :)

Voilà, je bricole un petit script me permettant de calculer mes frais réels sur les kilomètres.

Dans une table mysql, je stocke les diverses formules de calculs de déductions en fonction de la puissance fiscale et des kilomètres.

Dans mon script php, je récupère la formule correspondante en fonction des km et des cv du véhicule.

Seulement php doit certainement voir cette formule comme du simple texte et non comme une formule car c’est la formule qui est affichée au lieu du résultat.

Par exemple, la formule que je récupère depuis la DB est :
($d*0.305)+1188
Ce qui correspond à la tranche 5001 à 20000 km avec un véhicule de 5 Cv.

Mon total kilométrique est calculé précédemment et stocké dans une variable $totalkm .

Puis je recopie la valeur totalkm dans $d :

Code : Tout sélectionner

$d = $totalkm;

et si je fais

Code : Tout sélectionner

echo $formule;
La page affiche la formule au lieu du résultat.

J'ai essayé en forçant arbitrairement par exemple :

Code : Tout sélectionner

$d = 6100;
Mais le résultat est le même, la page affiche :

Code : Tout sélectionner

($d*0.305)+1188
Si j'ajoute :

Code : Tout sélectionner

$formule = str_replace("\$d", $d, $formule );
La page affiche :

Code : Tout sélectionner

(6100 * 0,305) + 1 188
au lieu du résultat.

Si je mets pour tester :

Code : Tout sélectionner

$formule = ($d*0.305)+1188;
J'obtiens le bon résultat ( 3048.5 dans le cas présent).

Je pense que la variable $formule a une valeur vue comme texte et non comme opération.

Le souci c'est que je n'ai totalement aucune idée de comment changer cela.

Si quelqu'un a un tuyau pour m'aiguiller , ce serait super :)

Merci
Couin
Un Couin vaut mieux que Deux tu couineras :D

Mammouth du PHP | 948 Messages

09 févr. 2018, 15:13

<?php
$d = 1000;
$str = "($d*0.305)+1188";
eval("\$str = $str;");
echo $str;
?>

après, cette solution est très discutable. il ne me serait pas venu à l'idée de mettre une telle formule ailleurs que dans du code php.

Eléphant du PHP | 105 Messages

09 févr. 2018, 15:57

Hello,

C'est effectivement l'astuce que j'ai trouvée et que j'allais poster pour au cas où quelqu'un rencontrerait le même souci.

Ceci étant, je suis d'accord que c'est assez tordu, mais comment stocker des formules pour pouvoir les modifier sans toucher aux pages php ?
Je n'ai trouvé qu'un les stockant dans la DB, mais je suis preneur de tout e autre astuce :)

Merci
Couin
Un Couin vaut mieux que Deux tu couineras :D

Mammouth du PHP | 1362 Messages

14 févr. 2018, 17:55

Si la formule a toujours la même structure maiis les coéficient change, ce sont les coéfficient qu'il faut garder en base.

une autre solution moins risqué, est que php fasse faire le calcul à javascript.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie