Calculatrice PHP [Résolu]

- - Dernière réponse :  lgslgs - 25 janv. 2019 à 14:57
Bonjour,
J'ai fait une calculatrice en php mais cette dernière ne calcule pas les nombre à virgule. Quand je saisi des nombre à virgule avec le oint ou la virgule du clavier, j'ai une erreur comme retour. Mais ça fonctionne avec les entiers. Voici le code
<code>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="operation.php">

<label for="valeur1" style="display:block; float:left; width:70px">Valeur 1</label>

<input type="number" name="valeur1" id="valeur1" value="<?php
if (isset($_POST['valeur1'])) echo $_POST['valeur1']; ?>"/><br/><br/>

<label for="operateur" style="display:block; float:left; width:70px">Opérateur</label>
<select name="operateur" id="operateur">
<option value="+" <?php
if (isset($_POST['operateur']) AND $_POST['operateur']=="+") {
echo "selected";
}?>>+
<option value="-" <?php
if (isset($_POST['operateur']) AND $_POST['operateur']=="-") {
echo "selected";
}?>>-
<option value="*" <?php
if (isset($_POST['operateur']) AND $_POST['operateur']=="*") {
echo "selected";
}?>>*
<option value="/" <?php
if (isset($_POST['operateur']) AND $_POST['operateur']=="/") {
echo "selected";
}?>>/
</select><br/><br/>

<label for="valeur2" style="display:block; float:left; width:70px">Valeur 2</label>

<input type="number" name="valeur2" id="valeur2" value="<?php
if (isset($_POST['valeur2'])) echo $_POST['valeur2']; ?>"/><br/>


<input type="submit" name="bSubmit" value="Valider">
</form>
<p>
<?php

if(!is_null($_POST['valeur1']) && !is_null($_POST['valeur2']))
{
$valeur1 = htmlspecialchars($_POST['valeur1']);
$valeur2 = htmlspecialchars($_POST['valeur2']);

if($_POST['operateur'] == "/" && $_POST['valeur2'] == 0)
{
$erreur = "Un nombre ne peut pas être divisé par 0";
}//else{ $resultat = $_POST['valeur1'].$_POST['operateur'].$_POST['valeur2']; }
elseif($_POST['operateur'] == "+")
{
$resultat = $valeur1 + $valeur2;
}
elseif($_POST['operateur'] == "-")
{
$resultat = $valeur1 - $valeur2;
}
elseif($_POST['operateur'] == "*")
{
$resultat = $valeur1 * $valeur2;
}
elseif($_POST['operateur'] == "/" && $_POST['valeur2'] != 0)
{
$resultat = $valeur1 / $valeur2;
}


}else { $erreur = "Vous devez saisir des valeurs"; }
if(isset($erreur)) echo "<font color='red'>".$erreur."<font>";
if(isset($resultat)) echo "Le résultat est : ".$resultat;
?></p>
</body>
</html>
<code>

Aidez moi svp
Afficher la suite 

2 réponses

Messages postés
26513
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2019
1829
0
Merci
Bonjour,

Déjà... pour poster ton code sur le forum, merci de le faire en utilisant les BALISES DE CODE.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite je t'invite vivement à lire et à appliquer ce qui est indiqué dans ce lien : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
surtout la partie concernant la récupération PROPRE des variables AVANT de les utiliser.

Pour finir, regarde donc comment s'utiliser le floatval() http://php.net/manual/fr/function.floatval.php


Commenter la réponse de jordane45
Messages postés
1428
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
24 janvier 2019
87
0
Merci
Salut,
il faut que tu rajoutes ça
step="0.01"
dans tes inputs, le type number par défaut est limité aux nombres entiers, voir ici : https://developer.mozilla.org/fr/docs/Web/HTML/Element/Input/number#Autoriser_les_valeurs_décimales .
jordane45
Messages postés
26513
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2019
1829 -
ou any pour n'importe quelle valeur
<input type="number" step="any" />
MERCI ça a marché avec le step ="any"
Commenter la réponse de miramaze