Php formulaire calcul de congé.
Résolu/Fermé
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
-
15 mars 2016 à 09:50
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 - 16 mars 2016 à 23:58
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 - 16 mars 2016 à 23:58
A voir également:
- Calcul php formulaire
- Calcul moyenne excel - Guide
- Formulaire de réclamation facebook - Guide
- Easy php - Télécharger - Divers Web & Internet
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
7 réponses
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
Modifié par jordane45 le 15/03/2016 à 17:29
Modifié par jordane45 le 15/03/2016 à 17:29
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
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
15 mars 2016 à 10:01
15 mars 2016 à 10:01
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
.
.
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
Modifié par Tzmagnum le 15/03/2016 à 11:50
Modifié par Tzmagnum le 15/03/2016 à 11:50
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 ''; } } ?>
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
15 mars 2016 à 11:52
15 mars 2016 à 11:52
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;
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 12:12
15 mars 2016 à 12:12
cela m'affiche Array ( [A] => 40 [R] => 5 [Q] => 38 [S] => 38 [C] => 5 )
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
15 mars 2016 à 12:29
15 mars 2016 à 12:29
Et avec le reste du code que je t'ai donné. .. le résultat donne quoi ?
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 13:31
15 mars 2016 à 13:31
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 ''; } } ?>
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
15 mars 2016 à 15:42
15 mars 2016 à 15:42
Et si tu fais un echo de $resultat ??
Que te donne t'il ?
Que te donne t'il ?
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 16:32
15 mars 2016 à 16:32
Si je rajoute
Sa m'affiche une page toute blanche sans erreur.
echo .$resultat.;
Sa m'affiche une page toute blanche sans erreur.
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 16:40
15 mars 2016 à 16:40
Que fais ce "point" devant la variable ?? et l'autre derrière ?????
Il faut simplement écrire :
Il faut simplement écrire :
echo $resultat;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 17:03
15 mars 2016 à 17:03
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.
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
15 mars 2016 à 17:07
15 mars 2016 à 17:07
Peux tu me remontrer le code complet de ta page ? (avec toutes les modifs demandées...)
Tu as bien mis la ligne error_reporting comme indiqué au début de cette discussion ???
Tu as bien mis la ligne error_reporting comme indiqué au début de cette discussion ???
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 17:21
15 mars 2016 à 17:21
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 ''; } } ?>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
15 mars 2016 à 23:35
15 mars 2016 à 23:35
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.
jordane45
Messages postés
38427
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 février 2025
4 735
16 mars 2016 à 10:06
16 mars 2016 à 10:06
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 '' ;
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
16 mars 2016 à 23:58
16 mars 2016 à 23:58
C'est résolu.
Un grand merci.
Un grand merci.