Php formulaire calcul de congé.
Résolu
Tzmagnum
Messages postés
132
Statut
Membre
-
Tzmagnum Messages postés 132 Statut Membre -
Tzmagnum Messages postés 132 Statut Membre -
Bonjour,
Je n'arrive pas a coder ce formulaire depuis 3 jours.
Cela m'affiche une page blanche.
Savez-vous me dire pourquoi svp ?
Merci d'avance.
Bien à vous.
Je n'arrive pas a coder ce formulaire depuis 3 jours.
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.
7 réponses
-
Essayes ça :
<?php header('Content-type: text/html; charset=utf-8'); //------------------------------------------------------------// //Affichage des erreurs PHP //------------------------------------------------------------// error_reporting(E_ALL); //------------------------------------------------------------// //Récupération propre des variables: //------------------------------------------------------------// $A = isset($_POST['A']) ? (float)$_POST['A'] : 0; $R = isset($_POST['R']) ? (float)$_POST['R'] : 0; $C = isset($_POST['C']) ? (float)$_POST['C'] : 0; $Q = isset($_POST['Q']) ? (float)$_POST['Q'] : 0; $S = isset($_POST['S']) ? (float)$_POST['S'] : 0; $resultat = ($A * $C / $R) * $Q / $S; //------------------------------------------------------------// //le temps des tests :. //------------------------------------------------------------// print_r($_POST); echo $resultat; //------------------------------------------------------------// 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'])){ ?> <form method="post" action=""> Nombre total de jour à prendre en compte pour le calcul de la durée des vacances : <input type="number" name="A" /><br /> Nombre moyen de jours par semaine durant lesquels le travailleur est censé travailler sur la base de son contrat : <input type="number" name="R" /><br /> Nombre moyen d'heures par semaine durant lesquelles le travailleur est censé travailler sur la base de son contrat : <input type="number" name="Q" /><br /> Nombre moyen d'heures par semaine durant lesquelles un travailleur à temps plein est censé travailler : <input type="number" name="S" /><br /> <input type="hidden" name="C" value="5" /><br /> <input type="submit" value="Calculer" /> </form> <?php } else { 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é'; }elseif ($resultat >= 10 && $resultat < 20) { // on teste si la valeur de notre variable est comprise entre 10 et 19 echo 'Vu que vous avez travaillé ' .$resultat.' jour(s) l\'année précédente vous avez droit à 1 jour de congé'; } else { // si les deux tests précédents n'ont pas aboutis, alors on tombe dans ce cas echo ''; } } ?>
Cordialement,
Jordane -
Bonjour,
1 - Ajoutes la ligne suivante au début de ton script :error_reporting(E_ALL);
2 - Tu as des erreurs de syntaxe .... tu as oublié des "points".
par exemple :echo 'Vu que vous avez travaillé ' $resultat. ' jour(s)
A remplacer par :
echo 'Vu que vous avez travaillé ' . $resultat . ' jour(s)
3 - Merci de spécifier le "langage" dans les balises de code lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
. -
Merci,
j'ai modifié cela.
Maintenant la page s'affiche, mais le calcul ne se fait pas, $resultat apparait toujours comme 0.
D'où cela pourrait venir svp ?
Merci.
Voici le lien de la page en question pour que vous puissiez voir :
http://liberty-chat.be/stp_dev/tools/conges.php
Voici le code modifié :
<?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'])) { ?> <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" /><br /> Nombre moyen de jours par semaine durant lesquels le travailleur est censé travailler sur la base de son contrat : <input type="text" name="R" /><br /> Nombre moyen d'heures par semaine durant lesquelles le travailleur est censé travailler sur la base de son contrat : <input type="text" name="Q" /><br /> Nombre moyen d'heures par semaine durant lesquelles un travailleur à temps plein est censé travailler : <input type="text" name="S" /><br /> <input type="hidden" name="C" value"5" /><br /> <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é'; } else { // si les deux tests précédents n'ont pas aboutis, alors on tombe dans ce cas echo ''; } } ?>-
Fais donc un PRINT des variables histoire que l'on sache ce qu'elles contiennent.
print_r($_POST);
De plus, .. pense à récupérer "proprement" les variables AVANT de les utiliser.
pour se faire tu peux utiliser ISSET et l'écriture TERNAIRE
Comme ceci :$A = isset($_POST['A']) ? (float)$_POST['A'] : 0; $R = isset($_POST['R']) ? (float)$_POST['R'] : 0; $C = isset($_POST['C']) ? (float)$_POST['C'] : 0; $Q = isset($_POST['Q']) ? (float)$_POST['Q'] : 0; $S = isset($_POST['S']) ? (float)$_POST['S'] : 0; $resultat = ($A * $C / $R) * $Q / $S;
-
-
-
-
Cela ne m'affiche rien de plus que Array ( [A] => 40 [R] => 5 [Q] => 38 [S] => 38 [C] => 5 ).
Cependant je sais pas si je le met bien au bon endroit.
Merci
Voici le lien de la page en question pour que vous puissiez voir :
http://liberty-chat.be/stp_dev/tools/conges.php
Voici le code modifié :
<?php header('Content-type: text/html; charset=utf-8'); 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'])) { ?> <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" /><br /> Nombre moyen de jours par semaine durant lesquels le travailleur est censé travailler sur la base de son contrat : <input type="text" name="R" /><br /> Nombre moyen d'heures par semaine durant lesquelles le travailleur est censé travailler sur la base de son contrat : <input type="text" name="Q" /><br /> Nombre moyen d'heures par semaine durant lesquelles un travailleur à temps plein est censé travailler : <input type="text" name="S" /><br /> <input type="hidden" name="C" value="5" /><br /> <input type="submit" value="Calculer" /> </form> <?php } else { $A = isset($_POST['A']) ? (float)$_POST['A'] : 0; $R = isset($_POST['R']) ? (float)$_POST['R'] : 0; $C = isset($_POST['C']) ? (float)$_POST['C'] : 0; $Q = isset($_POST['Q']) ? (float)$_POST['Q'] : 0; $S = isset($_POST['S']) ? (float)$_POST['S'] : 0; print_r($_POST); $resultat = ($A * $C / $R) * $Q / $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é'; } else { // si les deux tests précédents n'ont pas aboutis, alors on tombe dans ce cas echo ''; } } ?> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Désolé, je débute, c'est pour apprendre que je code ces quelques pages.
Avec
echo $resultat;
cela m'affiche également une page toute blanche. -
Oui je l'ai mis
Voici le code complet:
<?php error_reporting(E_ALL); header('Content-type: text/html; charset=utf-8'); 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'])) { ?> <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" /><br /> Nombre moyen de jours par semaine durant lesquels le travailleur est censé travailler sur la base de son contrat : <input type="text" name="R" /><br /> Nombre moyen d'heures par semaine durant lesquelles le travailleur est censé travailler sur la base de son contrat : <input type="text" name="Q" /><br /> Nombre moyen d'heures par semaine durant lesquelles un travailleur à temps plein est censé travailler : <input type="text" name="S" /><br /> <input type="hidden" name="C" value="5" /><br /> <input type="submit" value="Calculer" /> </form> <?php } else { $A = isset($_POST['A']) ? (float)$_POST['A'] : 0; $R = isset($_POST['R']) ? (float)$_POST['R'] : 0; $C = isset($_POST['C']) ? (float)$_POST['C'] : 0; $Q = isset($_POST['Q']) ? (float)$_POST['Q'] : 0; $S = isset($_POST['S']) ? (float)$_POST['S'] : 0; print_r($_POST) $resultat = ($A * $C / $R) * $Q / $S; // on teste si la valeur de notre variable est comprise entre 0 et 9 echo $resultat; 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é'; } else { // si les deux tests précédents n'ont pas aboutis, alors on tombe dans ce cas echo ''; } } ?> -
Désolé de la réponse tardive, je n'avais plus accès à un ordinateur.
Cela ne fonctionne pas avec cette modification, j'ai pourtant juste fais un copier/coller.
Sa m'affiche cela au dessus de la page :
Warning: Division by zero in /var/www/stp_dev/tools/conges.php on line 19 Call Stack: 0.0003 243376 1. {main}() /var/www/stp_dev/tools/conges.php:0 Warning: Division by zero in /var/www/stp_dev/tools/conges.php on line 19 Call Stack: 0.0003 243376 1. {main}() /var/www/stp_dev/tools/conges.php:0 Array ( ) Notice: Undefined index: A in /var/www/stp_dev/tools/conges.php on line 28 Call Stack: 0.0003 243376 1. {main}()
Et puis quand je remplis mes cases et que je clique sur calculer sa m'affiche une page blanche avec juste ceci de noté tout en haut :
Array ( [A] => 41 [R] => 5 [Q] => 38 [S] => 38 [C] => 5 ) 41
Merci.-
Donc c'est bon.
Il ne te reste plus qu'à gérer la division par zéro.
Par exemple en faisant :if($R>0 && $S>0){ $resultat = ($A * $C / $R) * $Q / $S; }
Le reste fonctionne visiblement.
Tu as bien le calcul qui est fait : => 41
Si rien d'autre n'apparait ... c'est par ce que tu es dans le ELSE de ton IF ... et que dedans ... tu as juste fais unecho '' ;
-
-