Calculer la date de la prochaine formation

Fermé
Luc4ever - 21 mars 2008 à 09:36
 Luc4ever - 4 avril 2008 à 14:43
Bonjour,

Alors une entreprise m'a demandé de faire son site web, c'est une entreprise de formations.
Le type m'a demandé de créer un formulaire où l'utilisateur entre la date à laquelle il a passé
une formation. A partir de ça, il faudrait pouvoir calculer la date de la prochaine formation à faire
où une mise à jour de la formation qu'il a déja)...

Si quelqu'un pouvait m'aider pour un programme calculant cette date.
MErci d'avance !

13 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
21 mars 2008 à 11:45
Bonjour,

Pourquoi pas mais :
- peux-tu donner les contraites / règles de calcul
- dans quel language faut-il que ce soit codé ? javascript, php, autre ?
0
pardon, j'ai complètement zappé de préciser le langage...
alors euh php ou javascript je pense, je n'ai pas de contrainte au niveau du langage, c'est moi qui choisi, donc après je peux opter sur la manière la plus simple et pratique pour réaliser la chose...
au niveau des règles de calcul : rien de spé je crois, je sais pas encore exactement, mais pour l'exemple je dirais que la formation n'est plus a jour au bout de 2 ans et 5 mois. Donc calculer la date 2 ans et 5 mois plus tard à la date qui est entrée dans le formulaire...
merci !
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
21 mars 2008 à 17:13
Ok dans ce cas là tu peux le faire en javascript en t'inspirant du cours ici présent :
https://www.commentcamarche.net/contents/571-javascript-l-objet-date

Bon codage ;) (tu as tout ce qu'il faut dans cette page normalement)
0
Je vois pas du tout comment faire à vrai dire...
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 avril 2008 à 12:22
Bon..

Tu créé un objet date initialisé à la date que tu veux. Puis tu set (via la méthode setDay, setMonth, setYear) ta nouvelle date en incrémentant la donnée voulue.
<script language="javascript">
var maDate = new Date();

document.write("<BR>Date courante : "+maDate.getFullYear()+"-"+maDate.getMonth()+"-"+maDate.getDate());

var maDuree = 20;
var nbMoisDsAnnee = 12;

var nouveau_mois = (maDate.getMonth() + maDuree) % nbMoisDsAnnee;
maDate.setMonth(nouveau_mois);
var nouvelle_annee = (maDate.getFullYear() + (maDuree / nbMoisDsAnnee) );
maDate.setFullYear(nouvelle_annee);

document.write("<BR>Nouvelle date : "+maDate.getFullYear()+"-"+maDate.getMonth()+"-"+maDate.getDate());
</script>


C'est quand même pas compliqué de faire un petit effort non ?
0

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

Posez votre question
ok merci beaucoup alors, j'ai cherché quelque chose de compliqué alors que ça ne l'était pas tant...
merci encore
0
maintenant je cherche a remplacer maDate.getFullYear(), maDate.getMonth() par les données de mon formulaire, mais je ne m'en sors pas... voici mon formulaire :

<form method="post" name="form1" id="form1">
	<div align="center">';Date de votre formation:
      <strong>
	  <select name="regleMois" size="1">
        <option value="1"> Janvier </option>
        <option value="2"> Février </option>
        <option value="3"> Mars </option>
        <option value="4"> Avril </option>
        <option value="5"> Mai </option>
        <option value="6"> Juin </option>
        <option value="7"> Juillet </option>
        <option value="8"> Aout </option>
        <option value="9"> Septembre </option>
        <option value="10"> Octobre </option>
        <option value="11"> Novembre </option>
        <option value="12"> Décembre </option>
      </select> 
	  <input type="text" size="4" name="regleAnnee" value="2007"> &nbsp; </strong></div>
  <div align="center"><center><p>&nbsp; <input type="reset" name="B2" value="Effacer"> <input
  type="button" name="B1" value="Valider" onclick="date()">
  </p>
  </center></div>
  <center><div id="console" style="position: absolute;left:40%; width: 400px; height: 250px; color: black;"></div></center>
</form>
</div>


et voici ta fonction que j'ai modifié, mais comme tu peux le voir je ne parle plus d'objet date, ce qui doit poser problème je pense... mais je n'arrive pas a voir comment y remédier...

la fonction :
function date() {

var mois = document.form1.regleMois.value;
var annee = document.form1.regleAnnee.value;

var console = document.getElementById("console");

var maDuree = 24;
var nbMoisDsAnnee = 12;

var nouveau_mois = (mois + maDuree) % nbMoisDsAnnee;
if(nouveau_mois = 0){ nouveau_mois = 12;}
var nouvelle_annee = annee + (maDuree/nbMoisDsAnnee);
console.innerHTML = "<BR><BR>Date de la formation : "+annee+"-"+mois+"<br><br>Nouvelle date : "+nouvelle_annee+"-"+nouveau_mois;
}
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 avril 2008 à 16:42
Pour sélectionner la valeur d'une liste déroulante ce n'est pas comme pour un champ de type 'input'.
Voilà comment faire :
var listeMois = document.form1.regleMois.options;
var mois = listeMois[listeMois.selectedIndex].value;


Il ne te reste plus qu'à compléter ton script comme il faut.
0
une dernière question...
maintenant, dans mon formulaire, j'ai rajouté une liste déroulante correspondant a différentes formations...
et a chaque formation on trouve une duree différente. MA boucle ne fonctionne pas, et je n'arrive pas a comprendre pourquoi, car en faisant une "alert" je trouve les bonnes valeurs de selectedIndex...

le formulaire :
<div id="titre_calcul" align="center"><h2 align="center">Calculez la durée de validité de votre formation</h2></div>
<div align="left">

<form method="post" name="form1" id="form1">
	<div align="center">
	 Formation :
	  <select name="regleForm" id="formation" size="1">
	    <option>Select</option>
        <option value="1"> SST </option>
        <option value="2"> SSIAP </option>
        <option value="3"> CHSCT </option>
	  </select><br/><br/>
      Date de votre formation:
      <strong>
	  <select name="regleMois" size="1">
        <option value="1"> Janvier </option>
        <option value="2"> Février </option>
        <option value="3"> Mars </option>
        <option value="4"> Avril </option>
        <option value="5"> Mai </option>
        <option value="6"> Juin </option>
        <option value="7"> Juillet </option>
        <option value="8"> Aout </option>
        <option value="9"> Septembre </option>
        <option value="10"> Octobre </option>
        <option value="11"> Novembre </option>
        <option value="12"> Décembre </option>
      </select> 
	  <input type="text" size="4" name="regleAnnee" value="2008"> &nbsp; </strong></div>
  <div align="center"><center><p>&nbsp; <input type="reset" name="B2" value="Effacer" onclick="effacer()"> <input
  type="button" name="B1" value="Valider" onclick="date()">
  </p>
  </center></div>
  <center><div id="console" style="position: absolute;left:40%; width: 400px; height: 250px; color: black;"></div></center>
</form>
</div>


j'ai donc rajouté le select value=regleForm
et mon script :
function date() {

var listeMois = document.form1.regleMois.options;
var mois = listeMois[listeMois.selectedIndex].value;
var annee = document.form1.regleAnnee.value;
var maDuree = 0;
var maDate = new Date(annee, mois);
var nbMoisDsAnnee = 12;
console = document.getElementById("console");

if(document.form1.formation.options[document.form1.formation.selectedIndex].value = 1)var maDuree = 39;
else if(document.form1.formation.options[document.form1.formation.selectedIndex].value = 2)var maDuree = 12;
else var maDuree = 1;

alert(maDuree);
var nouveau_mois = (maDate.getMonth() + maDuree) % nbMoisDsAnnee;

if((maDate.getMonth() + maDuree) % nbMoisDsAnnee == 0) nouveau_mois = 12;

var nouvelle_annee = maDate.getFullYear() + Math.ceil(maDuree/nbMoisDsAnnee);


console.innerHTML = "<br><BR>Date de la formation : "+annee+"-"+mois+"<br><br>Nouvelle date:"+nouvelle_annee+"-"+nouveau_mois;
}

function effacer(){

	document.getElementById('console').innerHTML="";
}


il ne fonctionne pas au niveau de la condition... une alert que j'ai pu faire m'a montré qu'après ces conditions, maDuree est toujours égale a 39, même si je change la formation...

Merci encore tu m'aides vraiment beaucoup...
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 avril 2008 à 11:49
Dans ce bout de cote, plusieurs erreurs :
if(document.form1.formation.options[document.form1.formation.selectedIndex].value = 1)var maDuree = 39;
else if(document.form1.formation.options[document.form1.formation.selectedIndex].value = 2)var maDuree = 12;


Puisque tu as déjà déclarer la variable 'maDuree' plus haut, il est inutile de mettre : 'var maDuree = 28;"

Il faut simplement mettre : maDuree = 28;

Sinon, n'oubli pas que quand tu veux faire un test, il faut faire : if( toto == tata ) et non pas if ( toto = tata )

Un seul '=' signifie une attribution de valeur, ce qui est toujours VRAI, donc ton test est validé.
Alors que '==' signifie un test d'égalité sur la valeur, ce qui peut etre VRAI ou FAUX.
0
merci beaucoup !
Résolu
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 avril 2008 à 13:27
Pour mettre la discussion en "résolu" il faut cocher le tag "résolu" situé tout en haut de la discussion.
0
j'ai pas de tag "résolu"...
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 avril 2008 à 14:36
Tout en haut de la discussion si tu fais attention tu verra qu'il y a un "statut" pour la discussion. Le statut de la discussion en cours est "non résolu" et tu peux le faire passer en "résolu".
0
oui je le vois, mais impossible de le modifier ou quoi que ce soit
0