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
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
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:
- Calcul php
- Calcul moyenne excel - Guide
- Easy php - Télécharger - Divers Web & Internet
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
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
29 avril 2009 à 18:58
Il ne faut pas mettre de guillemets.
Attention aussi à la division par 0.
$_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.
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
28 avril 2009 à 22:51
salut !
$operation = 1+2*3et non pas
$operation = "1+2*3"
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
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.
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.
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
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.
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.
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
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.
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.
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
29 avril 2009 à 17:15
J'ai essayé mais ça ne marche pas
Voici le code employé
ou
Est-ce normal que ça ne marche pas ?
Ou y-a-t-il une autre solution ?
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 ?
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.
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.
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
24 févr. 2010 à 21:57
Salut !
Quel est le type de ta variable dans ta base de données ? varchar ? int ? char ?
Quel est le type de ta variable dans ta base de données ? varchar ? int ? char ?