Effectuer un calcul dans un formulaire [php]

[Fermé]
Signaler
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
9 juin 2010
-
Messages postés
33689
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 octobre 2021
-
Bonjour, j'aimerais pouvoir créer un formulaire dans lequel le visiteur pourrait entrer 3 données et où la réponse s'afficherait dans un quatrième champ de texte.
P.S. je débute en PHP, donc soyez précis(e) svp.

Donc : D=(A-B)/C

Merci à l'avance
Christophe

5 réponses

Messages postés
18579
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 octobre 2021
4 326
Remplace ton formulaire par ce code :
<?php
if(!preg_match("#^[0-9]+$#", $_POST['a']) || !preg_match("#^[0-9]+$#", $_POST['b']) || !preg_match("#^[0-9]+$#", $_POST['c']))
{
?>
<form method="post" action="">
 <input type="text" name="a" />
 <input type="text" name="b" />
 <input type="text" name="c" />
 <input type="submit" value="Calculer" />
</form>
<?php
}
else
{
 $d = ($_POST['a'] - $_POST['b']) / $_POST['c'];
 echo 'Résultat : '.$d;
}
?>
6
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
9 juin 2010

Merci Mille fois avion-f16,

parcontre, j'aimerais bien comprendre ce que tu as fait dans la partie

<?php
if(!preg_match("#^[0-9]+$#", $_POST['a']) || !preg_match("#^[0-9]+$#", $_POST['b']) || !preg_match("#^[0-9]+$#", $_POST['c']))
{
?>

excuse mon incompétence
christophe
Messages postés
18579
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 octobre 2021
4 326
Ca s'appelle des expressions régulières (Regex). Les Regex permettent par exemple de vérifier que ce soit bien une adresse mail qui est entrée dans le champ. Ici, je vérifie qu'il n'y ai que des chiffres et il en faut 1 ou plus (et j'effectue la vérification sur tous les champs).

Pour en savoir plus : Partie 1 | Partie 2
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
9 juin 2010

Parfait, je te remercie
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
2 août 2021

Bonjour,


J'ai suivi votre logique pour créer ce formulaire de calcul cependant chez moi cela ne fonctionne pas.

Cela m'affiche une page blanche.


<?php
if(!preg_match("#^[0-9]+$#", $_POST['A']) || !preg_match("#^[0-9]+$#", $_POST['R']) || !preg_match("#^[0-9]+$#", $_POST['Q']) || !preg_match("#^[0-9]+$#", $_POST['S']) || !preg_match("#^[0-9]+$#", $_POST['C']))
{
?>
<form method="post" action="">
Nombre total de jour à prendre en compte pour le calcul de la durée des vacances : <input type="text" name="A" />
Nombre moyen de jours par semaine durant lesquels le travailleur est censé travailler sur la base de son contrat : <input type="text" name="R" />
Nombre moyen d'heures par semaine durant lesquelles le travailleur est censé travailler sur la base de son contrat : <input type="text" name="Q" />
Nombre moyen d'heures par semaine durant lesquelles un travailleur à temps plein est censé travailler : <input type="text" name="S" />
<input type="hidden" name="C" value="5" />
<input type="submit" value="Calculer" />
</form>
<?php
}
else
{

$resultat = ($_POST['A'] * $_POST['C'] / $_POST['R']) * $_POST['Q'] / $_POST['S'];

// on teste si la valeur de notre variable est comprise entre 0 et 9

if ($resultat >= 0 && $resultat < 10) {

echo 'Vu que vous avez travaillé ' $resultat. ' jour(s) l\'année précédente vous avez droit à aucun jour de congé';

}

// on teste si la valeur de notre variable est comprise entre 10 et 19
elseif ($resultat >= 10 && $resultat < 20) {


echo 'Vu que vous avez travaillé ' $resultat. ' jour(s) l\'année précédente vous avez droit à 1 jour de congé';

}

// on teste si la valeur de notre variable est comprise entre 20 et 38
elseif ($resultat >= 20 && $resultat < 39) {


echo 'Vu que vous avez travaillé ' $resultat. ' jour(s) l\'année précédente vous avez droit à 2 jours de congés';

}

else {

// si les deux tests précédents n'ont pas aboutis, alors on tombe dans ce cas

echo ' ';

}


}

?>



Savez-vous me dire pourquoi svp ?

Merci d'avance.

Bien à vous.
Messages postés
33689
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 octobre 2021
3 762
Bonjour,
La question initiale datant de 2009 ... il serait plus judicieux que tu ouvres ta propre question sur le forum.
Merci.

Quoi qu'il en soit, tu as des erreurs de syntaxe dans ton code.....
Commence par ajouter
 error_reporting(E_ALL);
au début de ton script pour afficher les erreurs.