PHP : Calcul opération contenue dans variable

Fermé
jemsss Messages postés 188 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 28 novembre 2019 - 28 avril 2009 à 22:39
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 24 févr. 2010 à 21:57
Bonjour,

Je ne trouve pas comment calculer un opération enregistrée dans une variable en PHP.

Exemple :
Le texte contenue dans $operation est "1+2*3"
" echo $operation " me donne " 1+2*3 " or je voudrais qu'il affiche le résultat de l'opération : "7"

Savez-vous comment faire?
Merci d'avance
A voir également:

8 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
29 avril 2009 à 18:58
Il ne faut pas mettre de guillemets.

$_POST['operation'] = '10+50*12';

if( preg_match('#^\d+[*/+-]{1}\d+([*/+-]{1}\d+)*$#', $_POST['operation']) )
{
   eval("\$resultat = {$_POST['operation']};");
   echo "résulat de l'opération {$_POST['operation']} : $resultat";
}
else
{
   // format incorrect
   echo 'format non autorisé !';
}


Attention aussi à la division par 0.
4
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
28 avril 2009 à 22:51
salut !
$operation = 1+2*3
et non pas
$operation = "1+2*3"
1
jemsss Messages postés 188 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 28 novembre 2019 17
28 avril 2009 à 22:59
Merci pour ta réponse,
Le problème c'est que l'opération est entrée par les interautes dans un formulaire. Donc je récupère les données et je les enregistre dans $operation.
Il doit bien y avoir une fonction ou une combine qui permet de transformer le texte d'une variable en opération. Mais je ne trouve pas.
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
28 avril 2009 à 23:07
Un eval() mais c'est vivement déconseillé pour des données saisies par un utilisateur.

Si tu t'en sers, il faut controler de manière stricte avec une expression régulière le format de la valeur reçue.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jemsss Messages postés 188 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 28 novembre 2019 17
28 avril 2009 à 23:37
Merci. Ok je vais essayer.
Les données ne sont pas directement saisie par l'utilisateur. Il n'y a pas des zone de texte mais des bouton pour tapé l'opération.
0
jemsss Messages postés 188 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 28 novembre 2019 17
29 avril 2009 à 17:15
J'ai essayé mais ça ne marche pas

Voici le code employé
eval( "\$resultat = \"$operation\";" );
echo $resultat;

ou
$resultat = $operation;
eval( "\$resultat = \"$resultat\";" );
echo $resultat;

Est-ce normal que ça ne marche pas ?
Ou y-a-t-il une autre solution ?
0
Bonjour tout le monde,

J'ai un petit soucis, j'ai une variable $an qui vaut "2009/2010" (équivalent à une année scolaire) :
$an = "2009/2010";

Le problème c'est que quand je veux enregistrer $an dans une base de donnée, elle prend la valeur de l'opération 2009 divisé par 2010 (0,99...), or je ne veut pas que ça soit interpreté comme une opération mais simplement comme une chaine.

Savez-vous commen faire cela?
Merci par avance.
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
24 févr. 2010 à 21:57
Salut !
Quel est le type de ta variable dans ta base de données ? varchar ? int ? char ?
0