Php formulaire calcul de congé.
Résolu
Tzmagnum
Messages postés
126
Date d'inscription
Statut
Membre
Dernière intervention
-
Tzmagnum Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
Tzmagnum Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
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.
A voir également:
- Calcul php formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Calcul moyenne excel - Guide
- Formulaire de reclamation instagram - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
7 réponses
Essayes ça :
Cordialement,
Jordane
<?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 :
2 - Tu as des erreurs de syntaxe .... tu as oublié des "points".
par exemple :
A remplacer par :
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
.
.
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é :
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.
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 :
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é :
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
cela m'affiche également une page toute blanche.
Avec
echo $resultat;
cela m'affiche également une page toute blanche.
Oui je l'ai mis
Voici le code complet:
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 :
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 :
Merci.
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 :
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 un
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 un
echo '' ;