CalCul à partir de quatre champs en php

Fermé
lauraM - 5 juin 2008 à 14:48
 lauraM - 6 juin 2008 à 12:14
Bonjour,
Je fais actuellement un formulaire html-php-mysql. Il s'agit dans mon formulaire d'intervention par un opérateur.
Alors j'explique mon problème :
j'ai besoin de faire un calcul dans un champ à partir de la saisie de l'utilisateur dans quatre autres champs.
Dans ces quatres autres champs sont : deux dates ("d/m/y") et deux heures ("H:i").
Le mieux serait de pouvoir faire le calcul automatiquement, mais je pense qu'il peut aussi bien se faire après un click sur un bouton.
Le calcul consiste à faire la différence entre les deux dates et les deux heures puis d'additionner les deux différences pour ensuite retrouver un total en minute.
J'espère que l'un ou l'une d'entre vous pourra m'aider.
A voir également:

11 réponses

Salut !

Quel est ton problème ? Faire le calcul ou afficher le résultat grâce à un bouton ?
0
Salut,
Mon problème c'est que je ne sais pas faire le calcul car j'ai voulu faire un test avec simplement deux champs et je n'ai pas réussit.
Ensuite pour l'affichage je préférerais qu'il soit automatique mais si on ne peut pas alors j'accepterais de l'afficher avec un bouton.
J'espère que c'est un peu plus clair.
Cordialement.
0
Il n'y a pas quelqu'un qui à une idée pour remédier à mon problème svp ? Merci d'avance
0
Il y une solution pour l'affichage automatique, sans rechargement de la page ni click avec bouton
fais un tour du coté d'AJAX c'est un peux compliqué mais ça vaux le coup

Pour l'affichage via bouton et rechargement, c simple
1- un formulaire HTML qui envoie les données
2- un script PHP qui reçoit les donnée envoyé via les tableaux $_POST où $_GET

Pour le calcule il y a une multitude de fonction de date et heure sous php qui peuvent t'aider
Essai de faire un explode des données récupérées puis utilise mktime
0
Bon j'espère que je vais savoir le faire avec AJAX car je n'y connais rien du tout.
Et avec le bouton c ske javai essayer de faire mais okun succès mais bon à mon avis les erreurs sont nombreuses.
Merci pour les conseils en tout cas.
Je repasserais sûrement sur cette conversation si je ne trouve pas.
0
Désolé de répondre aussi tard mais je suis rentré du boulot :

Selon moi tu devrais chercher du côté du timestamp pour tes calculs, si je me souviens bien il y a des fonctions pour donner le timestamp des dates.. ça serait plus facile pour calculer une fois tout mis en secondes..
ensuite pour le bouton faire une page php avec au début un

if (isset('champ1') and isset('champ2') and isset('champ3') and isset('champ4') //si les champs existent, donc si tes champs ont été remplis, donc si tu recharges ta page via le bouton submit
tu fais ton calcul et tu affiches ton formulaire avec les résultats
else //si les champs ne sont pas remplis c'est que c'est la première fois que tu charges la page
tu affiches ton formulaire de départ

Le truc c'est que dans ton formulaire tu ne mets pas d'action (dans la balise form) ce qui aura pour effet au click sur le bouton submit de recharger la page, mais comme les champs auront été rempli la condition sera remplie elle aussi et ont calculera et affichera le résultat du calcul


(je poste cela mais n'ai pas pris le temps de lire les post précédents, dsl)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C'est gentil pour ta réponse mais si je recharge la page ca va me changer certaines dates et heures ca qui fait que je n'aurait plus les même puisque j'ai fait en sorte qu'ellles s'affichent automatiquement à l'ouverture du formulaire.
0
De rien pour la réponse, faut bien s'aider ^^

Pour le problème de recharger je pense qu'il n'y en a pas en fait, je dis recharger mais ça n'aura pas le même effet que si tu réactualises (je sais pas si tu vois ce que je veux dire..).. et de plus tu peux automatiquement reremplir ces champs avec les dates que tu avais avant de recharger et ce en utilisant les variables $_POST[] dans l'attribut value des champs..

J'espère être compréhensible..
0
Azraka > Azraka
5 juin 2008 à 17:39
Tiens si jamais tu as décidé de retenir ma méthode et d'utiliser le timestamp pour effectuer tes calculs cela devrait t'aider :

Conversions d'une date vers un timestamp

PHP permet de convertir une date vers un timestamp. Pour ce faire, on utilise la fonction mktime(). Elle va vous permettre à partir du jour, de l'heure, etc ... d'une date classique, d'obtenir le timestamp correspondant. Ce timestamp pourra être ensuite stocké ou encore subir des traitements. Voici la syntaxe de base de la fonction mktime() :
<?php
$timestamp = mktime(heures, minutes, secondes, mois, jour, année);
?>

Si vous voulez obtenir le timestamp du 3 janvier 1988 à 2h31 et 10 secondes, vous pouvez mettre ceci :
<?php
echo mktime(2, 31, 10, 1, 3, 1988);
?>
(source : https://www.vulgarisation-informatique.com/dates-php.php
0
tu aurais un exemple de calcul de ce genre?
J'ai peu de connaissance on va dire.
0
C'est juste de la logique..

$date1= 12/10/2008

tu fais une petite fonction pour récupérer le mois le jour et l'année puis tu fais : $timestamp_date1= mktime(0, 0, 0, $mois, $jour, $annee); Les 0 s'expliquent par le fait que l'on ne tiennes pas comtpe des heures, minutes, secondes. On aurait pu mettre n'importe quoi, l'essentiel étant de mettre la même chose pour la deuxième date.

ici avec $mois= 10, $jour= 12 et $annee= 2008 on obtient : $timestamp_date1= 1223762400

Tu fais la même chose avec ta deuxième date puis tu fais une soustraction entre les timestamp et tu auras la différence entre les 2 dates.

Ensuite tu utilises une autre fonction pour avoir le résultat en minutes (le timestamp exprime un nombre de secondes).

En faisant $diff_timestamp= $timestamp1-timestamp2;
Puis $diff_timestamp= date('i', $diff_timestamp) tu auras ta différence entre les 2 dates en minutes !

(date() permet de convertir un timestamp en autre chose, i correspond aux minutes)
0
Ok je veux bien essayer mais j'ai pas très bien compris ce qu'est un timestamp ?
0
extrait du site du zéro (www.siteduzero.com) :

Un timestamp, c'est un nombre.
C'est le nombre de secondes écoulées depuis le 1er Janvier 1970 à Minuit.

Pourquoi depuis le 1er Janvier 1970 à Minuit ? C'est symbolique, il fallait bien prendre un point de départ.
En fait, ça représente le début de l'époque où le système d'exploitation Unix a été créé. Peut-être avez-vous déjà entendu parler de Unix ? Il est à la base de Linux, un système d'exploitation comme Windows (sauf qu'il est gratuit, mais ne nous égarons pas ^^).

Bref, le 1er Janvier 1970 à Minuit, le timestamp avait pour valeur 0. Aujourd'hui, beaucoup beaucoup de secondes se sont écoulées, vous devez vous en douter.


(si tu as besoin de tutoriel tu peux aller voir sur cet excellent site très clair et très abordable)
0
Merci ca va bien m'aider ce que tu m'as expliqué.
Par contre mes dates sont des dates saisies par l'utilisateur donc c'est là qui faut que je me serve du $_POST["nom du champ"] ???
0
Non, à partir des dates rentrées par l'utilisateur (j'espère que tu vérifies ce que rentre l'utilisateur en passant) tu vas juste devoir récupérer le jour le mois la date dans des variables (et les heures et minutes pour ton autre cas) pour pouvoir ensuite faire tes calculs.

Normalement pour ouvrir ton formulaire tu as ça : <form method="post"> le fait de ne pas mettre d'attribut action="nomdepage.php" va recharger la page au click ; mais les champs qui étaient remplis vont alors se retrouvés vides..

Dans la balise form on a écrit method= "post", cela indique la méthode de transfert d'information (je pense que tu le sais, désolé si c'est le cas). On va donc récupérer ces informations en utilisant $_POST.

Tes champs devraient ressembler à ça : <input type="text" size="50" name="champ"/>
Au rechargement de la page $_POST['champ'] vaudra la valeur qu'avait ton champ nommé "champ".

En écrivant <input type="text" size="50" name="titre" value="<?php $_POST['champ'] ?>"/> tu retrouveras ton champ qui sera rempli avec la valeur qu'il contenait.
0
En ce qui concerne mon formulaire il n'y a que deux bouton : un qui envoi à mon fichier "traitement.php" les données saisis pour qu'il les envois après les avoir vérifier à la base de donnée et un autre appelé "reset" qui efface toute les données en cas d'erreur.
Ensuite si mes champs heure ou dates ne sont pas remplis je dois faire en sorte d'affecter 0 à mon champ de résultat du calcul.
Je souhaitais utiliser un "if...else" mais je me demandais si j'ai possibilité de faire tout ca qu'en php ?
0
hmmm.. en fait je crois que je n'avais pas bien compris ce que tu veux faire, je pensais que à partir du formulaire où sont remplis les champs contenant les dates tu voulais réafficher ce formulaire avec les champs résultats remplis..

Au final ton seul problème est de faire le calcul non ?
0
oui c'est ca tout en affectant zero au resultat si des champs dates ouheures ne sont pas saisis pour l'utilisateur.
J'ai besoin d'affecter zer car comme j'ai plusieurs calcul du même type et qu'à la fin j'ai un total final et bien j'ai besoin d'affecter zero.
J'espère que je me suis mieux exprimée.
Quant au calcul je regarde sur le site que vous m'avez conseillé et j'espère pouvoir le faire sans trop de difficultés.
Mais bon...
Si vous avez un exemple concret de mon type de calcul avec l'affectation zéro je vous le demanderait volontier.
Merci
0