Activation selon heure (fct° faite mais pb)

Résolu/Fermé
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 - 9 mai 2005 à 16:34
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 - 12 mai 2005 à 10:59
Bonjour,

J'ai une page avec 2 paramétrages horaires: horaires de début, horaires de fin.

Ce paramétrage s'effectue par le biais de plusieurs ListBox permettant le choix de l'heure et de la date.

En gros, je lis la date et l'heure du PC et je la compare avec les paramétrages fournis par le choix effectuer dans les listBox.

Si la date et l'heure du PC sont comprises entre la "date et l'heure de début" et la "date et l'heure de fin", un message d'alerte affiche "ACTIVATION" sinon "DEFAUT".

Voila mon prooblème:
Tel que mon programme est fait, chaque horaire doit borner l'horaire du PC (chaque élément de la date PC doit êtres compri entre chaque élément de l'horaire paramétré de début et celle de fin). Ils ne dépendent pas les uns des autres.

Imaginons que nous sommes le 09/05/2005 19:09.

Horaire début sera forcément:
Jour <= 09
Mois <= 05
Année <= 2005
Heure <= 19
Minute <= 09

Horaire fin sera forcément:
Jour >= 09
Mois >= 05
Année >= 2005
Heure >= 19
Minute >= 09

Ce n'est pas ce que je veux. Je voudrais que l'heure de fin puisse être 08h si le jour est supérieur à 09.

Et comme je ne vois pas comment faire, je fais appel à vous.

Merci d'avance à ce qui se pencherons sur le problème.


Voila le code de ma page:

=======================================
=======================================


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD><TITLE>Tests: Affichage du contenu des ListBox dans des messages d'alert</TITLE>

<SCRIPT language=JavaScript type=text/javascript>
/* Fonction Horloge */
var dd, delai;
function debuteTemps(delai1)
{
	var hhmmss = "  ", min, sec;
	var jjmmaaaa = "  ", mois, an;
	delai = delai1;
	adate = new Date()
	hhmmss += adate.getHours();
	min = adate.getMinutes();
	jjmmaaaa = adate.getDate();
//	mois =(adate.getMonth()+1);
//	an = adate.getFullYear();

	if (min < 10)
		hhmmss += ":0" + min;
	else
		hhmmss += ":" + min;
		sec = adate.getSeconds();
		
	if (sec < 10)
		hhmmss += ":0" + sec;
	else
		hhmmss += ":" + sec;
		hhmmss = " " + hhmmss;
		hhmmss = " " + hhmmss;



	if (jjmmaaaa < 10)
		jjmmaaaa = " 0" + jjmmaaaa;
	else
		jjmmaaaa += " / " + jjmmaaaa;
		mois =(adate.getMonth()+1);
		
	if (mois < 10)
		jjmmaaaa += " / 0" + mois;
	else
		jjmmaaaa += " / " + mois;
		an = adate.getFullYear();
		
	if (an < 10)
		jjmmaaaa += " / 0" + an;
	else
		jjmmaaaa += " / " + an;
		jjmmaaaa = " " + jjmmaaaa;
		jjmmaaaa = " " + jjmmaaaa;
	
//		jjmmaaaa = jjmmaaaa+" / "+ mois+" / "+an;

		document.Temps1.Temps1.value = hhmmss;
		document.Temps1.Temps2.value = jjmmaaaa;
		dd = setTimeout("debuteTemps(delai)",delai1);
}

function Declaration_Horaire()
{
	var cf=document.forms[0];

	date=new Date();
	
/* Déclaration des tableaux */	
	PC_Date=new Array (3);						// Création d'un tableau (chaîne de caractère) contenant la DATE du PC (3 éléments: Jours / Mois / Annees)
	PC_Heure=new Array (2);						// Création d'un tableau (chaîne de caractère) contenant l'HEURE du PC (2 éléments: Heures : Minutes)

	PARAM_Date_DBT=new Array (3);				// Création d'un tableau (chaîne de caractère) contenant la DATE paramétrée dans les listebox de DEBUT d'Activation (3 éléments: Jours / Mois / Annees)
	PARAM_Heure_DBT=new Array (2);				// Création d'un tableau (chaîne de caractère) contenant l'HEURE paramétrée dans les listebox de DEBUT d'Activation (2 éléments: Heures : Minutes)

	PARAM_Date_FIN=new Array (3);				// Création d'un tableau (chaîne de caractère) contenant la DATE paramétrée dans les listebox de FIN d'Activation (3 éléments: Jours / Mois / Annees)
	PARAM_Heure_FIN=new Array (2);				// Création d'un tableau (chaîne de caractère) contenant l'HEURE paramétrée dans les listebox de FIN d'Activation (2 éléments: Heures : Minutes)

/* Récupération des horaires PC */
	PC_Date[0]=PC_Jours=date.getDate();				// Récupération du Jour
	PC_Date[1]=PC_Mois=(date.getMonth()+1);			// Récupération du Mois
	PC_Date[2]=PC_Annees=date.getFullYear();		// Récupération de l'Année

	PC_Heure[0]=PC_Heures=date.getHours();			// Récupération de l'Heure
	PC_Heure[1]=PC_Minutes=date.getMinutes();		// Récupération des Minutes

/* Récupération des horaires Paramétrées */
	/* Paramétrage Horaires de DEBUT */

	PARAM_Date_DBT[0]=PARAM_Jours_DBT=Jours_DBT.value;
	PARAM_Date_DBT[1]=PARAM_Mois_DBT=Mois_DBT.value;
	PARAM_Date_DBT[2]=PARAM_Annees_DBT=Annees_DBT.value;
	
	PARAM_Heure_DBT[0]=PARAM_Heures_DBT=Heures_DBT.value;
	PARAM_Heure_DBT[1]=PARAM_Minutes_DBT=Minutes_DBT.value;

	
	/* Paramétrage Horaires de FIN */

	PARAM_Date_FIN[0]=PARAM_Jours_FIN=Jours_FIN.value;
	PARAM_Date_FIN[1]=PARAM_Mois_FIN=Mois_FIN.value;
	PARAM_Date_FIN[2]=PARAM_Annees_FIN=Annees_FIN.value;
	
	PARAM_Heure_FIN[0]=PARAM_Heures_FIN=Heures_FIN.value;
	PARAM_Heure_FIN[1]=PARAM_Minutes_FIN=Minutes_FIN.value;

//	Tests_Alert();
	Activ_Detect();
}


function Activ_Detect()
{
	var cf=document.forms[0];

/* Programme Activation de la détection pendant la tranche horaire paramétrée */

	if (((PC_Date[2] >= PARAM_Date_DBT[2]) && (PC_Date[2] <= PARAM_Date_FIN[2]))
		&& ((PC_Date[1] >= PARAM_Date_DBT[1]) && (PC_Date[1] <= PARAM_Date_FIN[1]))
		&& ((PC_Date[0] >= PARAM_Date_DBT[0]) && (PC_Date[0] <= PARAM_Date_FIN[0]))
		&& ((PC_Heure[0] >= PARAM_Heure_DBT[0]) && (PC_Heure[0] <= PARAM_Heure_FIN[0]))
		&& ((PC_Heure[1] >= PARAM_Heure_DBT[1]) && (PC_Heure[1] <= PARAM_Heure_FIN[1])))
	{
		alert ("ACTIVATION");
	}
	else
	{
		alert ("DEFAUT");
	}
}


function Tests_Alert()
{
/* Tests des horaires PC */
	alert("Tableau PC_Date\n\n"+PC_Date[0]+" / "+PC_Date[1]+" / "+PC_Date[2]);			// Tests du tableau PC_Date
	alert("Tableau PC_Heure\n\n"+PC_Heure[0]+" heures : "+PC_Heure[1]+" minutes");			// Tests du tableau PC_Heure

/* Tests des horaires Paramétrées */
	/* DEBUT */
	alert("Tableau PARAM_Date_DBT\n\n"+PARAM_Date_DBT[0]+" / "+PARAM_Date_DBT[1]+" / "+PARAM_Date_DBT[2]);			// Tests du tableau PARAM_Date_DBT
	alert("Tableau PARAM_HEURE_DBT\n\n"+PARAM_Heure_DBT[0]+" heures : "+PARAM_Heure_DBT[1]+" minutes");			// Tests du tableau PARAM_Heure_DBT
	/* FIN */
	alert("Tableau PARAM_Date_FIN\n\n"+PARAM_Date_FIN[0]+" / "+PARAM_Date_FIN[1]+" / "+PARAM_Date_FIN[2]);			// Tests du tableau PARAM_Date_FIN
	alert("Tableau PARAM_HEURE_FIN\n\n"+PARAM_Heure_FIN[0]+" heures : "+PARAM_Heure_FIN[1]+" minutes");			// Tests du tableau PARAM_HEURE_FIN
}

function main()
{
	debuteTemps(1000);
}

</SCRIPT>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
</HEAD>


<BODY bgColor=#ffffff leftMargin=0 topMargin=0 onload="main()" onUnload="clearTimeout(dd)" marginwidth="0" marginheight="0">

<FORM NAME="Temps1">
  <p><b><u>Date Actuelle:</u> 
    <input type="text" name="Temps2" size="12">
    </b></p>
  <p><b><u>Heure Actuelle:</u> </b> 
    <input type="text" name="Temps1" size="10">
  </p>
  </FORM NAME="Temps1">

<hr>
<table width="30%" border="0">
  <tr> 
    <td width="23%"> 
      <div align="left"><u><b>DEBUT:</b></u></div>
    </td>
    <td width="16%"> 
      <div align="left"><u><i>Date:</i></u></div>
    </td>
    <td width="61%"> 
      <select name="Jours_DBT" size="1" onChange="document.PARAM_Jours_DBT=this.options[this.selectedIndex].value">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
        <option value="24">24</option>
        <option value="25">25</option>
        <option value="26">26</option>
        <option value="27">27</option>
        <option value="28">28</option>
        <option value="29">29</option>
        <option value="30">30</option>
        <option value="31">31</option>
      </select>
      / 
      <select name="Mois_DBT" size="1" onChange="document.PARAM_Mois_DBT=this.options[this.selectedIndex].value">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
      </select>
      / 
      <select name="Annees_DBT" size="1" onChange="document.PARAM_Annees_DBT=this.options[this.selectedIndex].value">
        <option value="2005">2005</option>
        <option value="2006">2006</option>
        <option value="2007">2007</option>
        <option value="2008">2008</option>
        <option value="2009">2009</option>
        <option value="2010">2010</option>
        <option value="2011">2011</option>
        <option value="2012">2012</option>
        <option value="2013">2013</option>
        <option value="2014">2014</option>
        <option value="2015">2015</option>
        <option value="2016">2016</option>
        <option value="2017">2017</option>
        <option value="2018">2018</option>
        <option value="2019">2019</option>
        <option value="2020">2020</option>
      </select>
    </td>
  </tr>
  <tr> 
    <td width="23%"> 
      <div align="left"><b><u></u></b></div>
    </td>
    <td width="16%"> 
      <div align="left"><u><i>Heure:</i></u></div>
    </td>
    <td width="61%"> 
      <select name="Heures_DBT" size="1" onChange="document.PARAM_Heures_DBT=this.options[this.selectedIndex].value">
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
      </select>
      : 
      <select name="Minutes_DBT" size="1" onChange="document.PARAM_Minutes_DBT=this.options[this.selectedIndex].value">
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
        <option value="24">24</option>
        <option value="25">25</option>
        <option value="26">26</option>
        <option value="27">27</option>
        <option value="28">28</option>
        <option value="29">29</option>
        <option value="30">30</option>
        <option value="31">31</option>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
      </select>
    </td>
  </tr>
</table>
<hr size="0" noshade>
<table width="30%" border="0">
  <tr> 
    <td width="23%"> 
      <div align="left"><u><b>FIN:</b></u></div>
    </td>
    <td width="15%"> 
      <div align="left"><u><i>Date:</i></u></div>
    </td>
    <td width="62%"> 
      <select name="Jours_FIN" size="1" onChange="document.PARAM_Jours_FIN=this.options[this.selectedIndex].value">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
        <option value="24">24</option>
        <option value="25">25</option>
        <option value="26">26</option>
        <option value="27">27</option>
        <option value="28">28</option>
        <option value="29">29</option>
        <option value="30">30</option>
        <option value="31">31</option>
      </select>
      / 
      <select name="Mois_FIN" size="1" onChange="document.PARAM_Mois_FIN=this.options[this.selectedIndex].value">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
      </select>
      / 
      <select name="Annees_FIN" size="1" onChange="document.PARAM_Annees_FIN=this.options[this.selectedIndex].value">
        <option value="2005">2005</option>
        <option value="2006">2006</option>
        <option value="2007">2007</option>
        <option value="2008">2008</option>
        <option value="2009">2009</option>
        <option value="2010">2010</option>
        <option value="2011">2011</option>
        <option value="2012">2012</option>
        <option value="2013">2013</option>
        <option value="2014">2014</option>
        <option value="2015">2015</option>
        <option value="2016">2016</option>
        <option value="2017">2017</option>
        <option value="2018">2018</option>
        <option value="2019">2019</option>
        <option value="2020">2020</option>
      </select>
    </td>
  </tr>
  <tr> 
    <td width="23%"> 
      <div align="left"><b><u></u></b></div>
    </td>
    <td width="15%"> 
      <div align="left"><u><i>Heure:</i></u></div>
    </td>
    <td width="62%"> 
      <select name="Heures_FIN" size="1" onChange="document.PARAM_Heures_FIN=this.options[this.selectedIndex].value">
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
      </select>
      : 
      <select name="Minutes_FIN" size="1" onChange="document.PARAM_Minutes_FIN=this.options[this.selectedIndex].value">
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
        <option value="24">24</option>
        <option value="25">25</option>
        <option value="26">26</option>
        <option value="27">27</option>
        <option value="28">28</option>
        <option value="29">29</option>
        <option value="30">30</option>
        <option value="31">31</option>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
      </select>
    </td>
  </tr>
</table>
<hr>
<p>[ <a href="javascript:Declaration_Horaire()">VALIDER</a> ]</p>
</BODY></HTML>

 


=======================================
=======================================



Nico.

46 réponses

nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 10:38
J'ai testé ton truc. Je n'arrive à rien avec. :(

Voila ce que j'ai fait:

	valide=true;

	if (((valide) && (PC_Date[2] > PARAM_Date_FIN[2]))		// Si Année_PC > Année_Param_FIN alors valide=FAUX
	|| ((valide) && (PC_Date[1] > PARAM_Date_FIN[1]))		// Si Mois_PC > Mois_Param_FIN alors valide=FAUX
	|| ((valide) && (PC_Date[0] > PARAM_Date_FIN[0]))		// Si Jour_PC > Jour_Param_FIN alors valide=FAUX
	|| ((valide) && (PC_Heure[1] > PARAM_Heure_FIN[1]))		// Si Heure_PC > Heure_Param_FIN alors valide=FAUX
	|| ((valide) && (PC_Heure[0] > PARAM_Heure_FIN[0]))		// Si Minute_PC > Minute_Param_FIN alors valide=FAUX
	|| ((valide) && (PC_Date[2] < PARAM_Date_DBT[2]))		// Si Année_PC < Année_Param_DBT alors valide=FAUX
	|| ((valide) && (PC_Date[1] < PARAM_Date_DBT[1]))		// Si Mois_PC < Mois_Param_DBT alors valide=FAUX
	|| ((valide) && (PC_Date[0] < PARAM_Date_DBT[0]))		// Si Jour_PC < Jour_Param_DBT alors valide=FAUX
	|| ((valide) && (PC_Heure[1] < PARAM_Heure_DBT[1]))		// Si Heure_PC < Heure_Param_DBT alors valide=FAUX
	|| ((valide) && (PC_Heure[0] < PARAM_Heure_DBT[0])))	// Si Minute_PC < Minute_Param_DBT alors valide=FAUX
	{
		valide=false;
		return valide;
	}
	
	if (valide == true)
	{
		alert ("ACTIVATION");	// Si valide=VRAI alors on est dans l'intervalle voulu: ==>> ACTIVATION
	}
	else
	{
		alert ("DEFAUT");
	}


Sinon, voila mes déclarations:

	var cf=document.forms[0];

	date=new Date();
	
/* Déclaration des tableaux */	
	PC_Date=new Array (3);
	PC_Heure=new Array (2);			

	PARAM_Date_DBT=new Array (3);			PARAM_Heure_DBT=new Array (2);

	PARAM_Date_FIN=new Array (3);		
	PARAM_Heure_FIN=new Array (2);

/* Récupération des horaires PC */
	PC_Date[0]=PC_Jours=date.getDate();
	PC_Date[1]=PC_Mois=(date.getMonth()+1);
	PC_Date[2]=PC_Annees=date.getFullYear();

	PC_Heure[0]=PC_Heures=date.getHours();
	PC_Heure[1]=PC_Minutes=date.getMinutes();

/* Récupération des horaires Paramétrées */
	/* Paramétrage Horaires de DEBUT */

	PARAM_Date_DBT[0]=PARAM_Jours_DBT=Jours_DBT.value;
	PARAM_Date_DBT[1]=PARAM_Mois_DBT=Mois_DBT.value;
	PARAM_Date_DBT[2]=PARAM_Annees_DBT=Annees_DBT.value;
	
	PARAM_Heure_DBT[0]=PARAM_Heures_DBT=Heures_DBT.value;
	PARAM_Heure_DBT[1]=PARAM_Minutes_DBT=Minutes_DBT.value;

	
	/* Paramétrage Horaires de FIN */

	PARAM_Date_FIN[0]=PARAM_Jours_FIN=Jours_FIN.value;
	PARAM_Date_FIN[1]=PARAM_Mois_FIN=Mois_FIN.value;
	PARAM_Date_FIN[2]=PARAM_Annees_FIN=Annees_FIN.value;
	
	PARAM_Heure_FIN[0]=PARAM_Heures_FIN=Heures_FIN.value;
	PARAM_Heure_FIN[1]=PARAM_Minutes_FIN=Minutes_FIN.value;
1
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
9 mai 2005 à 17:43
je te donne un algorithme et je te laisse le soin d'ecrire le javascript (c'est trop lent à lire ton code :) )
le principe est de donner une priorite aux valeurs selon l'importance du champs (heure<jour<mois<annee)
valide=vrai
si (valide) et (monAnnee>finAnnee) alors  valide=faux
si (valide) et (monMois>finMois) alors  valide=faux
si (valide) et (monJour>finJour) alors  valide=faux
si (valide) et (monHeure>finHeure) alors  valide=faux

si (valide) et (monAnnee<debAnnee) alors  valide=faux
si (valide) et (monMois<debMois) alors  valide=faux
si (valide) et (monJour<debJour) alors  valide=faux
si (valide) et (monHeure<debHeure) alors  valide=faux


à la fin si (valide=vrai) donc tu es dans l'interval désiré
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 10:00
Est-ce que chaque condition doit être indépendante l'une de l'autre?

De la forme:

if
{
  if
  {
     if
     {

      }
  }
}


ou pluto de la forme:

if
{
}

if
{
}

if
{
}

if
{
}



Et est-ce que je peux toujours mettre <= ou >= ou est-ce que c'est strictement < ou >?

Normalement, je pense pouvoir gardé la possibilité d'égalité. En tout cas, çà me serai nécessaire dans le cas présent.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 10:11
Oui, les if(){ } sont indépendant les un des autres
et les égalité strictes ou non, c'est à toi de définir si tu veux les mettre strict ou non, selon ta gestion du truc... (g pas lu ce que tu as fat, c"'est vrai que c'est relativement lent à lire...)

++
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 10:10
J'ai bien compris. Je suis vraiment étourdi. C'est forcément strictement < ou > dans ce cas. comme je veux que sa puisse être valide=VRAI quand c'est =.
0

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

Posez votre question
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 10:15
oui, et sisonn pour tes test, il est préférables de mettre de cette facon :
if( ....){
   truc = false;
}
else if( ....){
 truc = false;
}
else if( ..... ){
 truc = false;
}
...

Cela évite de refaire les autre test, si jamais ta valeur devient fausse des le premier test, et donc moins de calculs...
Il meme encore mieux d'écrire comme cela :
truc = true;
if(  ( .....)  ||  (.....)  || (....) ..... || (....) )
    truc = false;

return truc;


Moins on en fait, et mieux on se porte...
++
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 10:23
Il n'y a toujours pas de priorité.
Le résultat est le même que précédemment.

Voila mon code:
	valide=true;

	if ((valide) && (PC_Date[2] > PARAM_Date_FIN[2]))	{valide=false;}	// Si Année_PC > Année_Param_FIN alors valide=FAUX
	if ((valide) && (PC_Date[1] > PARAM_Date_FIN[1]))	{valide=false;}	// Si Mois_PC > Mois_Param_FIN alors valide=FAUX
	if ((valide) && (PC_Date[0] > PARAM_Date_FIN[0]))	{valide=false;}	// Si Jour_PC > Jour_Param_FIN alors valide=FAUX
	if ((valide) && (PC_Heure[1] > PARAM_Heure_FIN[1]))	{valide=false;}	// Si Heure_PC > Heure_Param_FIN alors valide=FAUX
	if ((valide) && (PC_Heure[0] > PARAM_Heure_FIN[0]))	{valide=false;}	// Si Minute_PC > Minute_Param_FIN alors valide=FAUX

	if ((valide) && (PC_Date[2] < PARAM_Date_DBT[2]))	{valide=false;}	// Si Année_PC < Année_Param_DBT alors valide=FAUX
	if ((valide) && (PC_Date[1] < PARAM_Date_DBT[1]))	{valide=false;}	// Si Mois_PC < Mois_Param_DBT alors valide=FAUX
	if ((valide) && (PC_Date[0] < PARAM_Date_DBT[0]))	{valide=false;}	// Si Jour_PC < Jour_Param_DBT alors valide=FAUX
	if ((valide) && (PC_Heure[1] < PARAM_Heure_DBT[1]))	{valide=false;}	// Si Heure_PC < Heure_Param_DBT alors valide=FAUX
	if ((valide) && (PC_Heure[0] < PARAM_Heure_DBT[0]))	{valide=false;}	// Si Minute_PC < Minute_Param_DBT alors valide=FAUX
	
	if (valide == true)
	{
		alert ("ACTIVATION");	// Si valide=VRAI alors on est dans l'intervalle voulu: ==>> ACTIVATION
	}
	else
	{
		alert ("DEFAUT");
	}
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 10:31
Ton pb ne viendrait pas plutot du calcul du deuxieme temps, l'horaire de fin (que tu as mis dans ton premier exemple).
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 10:28
je n'avais pas lu ton dernier message. J'essais çà de suite.

Merci
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 10:50
Dans ce que tu as fait (suite de if( ... || ...|| ...) ), il faut déjà virer tous les (valide), ca ne sert strictement a rien !

Pour le reste... tu dois avoir mal fait un truc qqpart mais je comprend pas ce que tu as fait

++

0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 10:55
Tout d'abord,
return valide;
fout la m....

Quand, il est là, je n'ai plus mon message DEFAUT.
J'ai essayé une autre structure plutôt similaire mais çà n'arrive toujours pas à gérer la priorité.

Voila le code:

	valide=true;

	if ((valide) && (PC_Date[2] > PARAM_Date_FIN[2]))	{valide=false;}
	else if ((valide) && (PC_Date[1] > PARAM_Date_FIN[1]))	{valide=false;}
	else if ((valide) && (PC_Date[0] > PARAM_Date_FIN[0]))	{valide=false;}
	else if ((valide) && (PC_Heure[1] > PARAM_Heure_FIN[1]))	{valide=false;}
	else if ((valide) && (PC_Heure[0] > PARAM_Heure_FIN[0]))	{valide=false;}

	else if ((valide) && (PC_Date[2] < PARAM_Date_DBT[2]))	{valide=false;}
	else if ((valide) && (PC_Date[1] < PARAM_Date_DBT[1]))	{valide=false;}
	else if ((valide) && (PC_Date[0] < PARAM_Date_DBT[0]))	{valide=false;}
	else if ((valide) && (PC_Heure[1] < PARAM_Heure_DBT[1]))	{valide=false;}
	else if ((valide) && (PC_Heure[0] < PARAM_Heure_DBT[0]))	{valide=false;}


	if (valide == true)
	{
		alert ("ACTIVATION");
	}
	else
	{
		alert ("DEFAUT");
	}



Mais que faire pour gérer cette satanée priorité sur mes conditions??????????

Je vais faire 2 3 recherches sur le net sur les gestions de priorités et je repasse faire un tour sur le forum des fois que quelqu'un serait plus malin que moi. (chose dont je ne doute aucunement) Vous êtes trop fort quand même. C'est çà les passionnés.

allez, MERCI.
a++
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 11:03
Evidement c'était pour l'exemple que j'ai mis return valide en pensant etre dans une fonction, toi il ne faut pas mettre return valide tout simplement :
var valide = true;
if (                    (PC_Date[2] > PARAM_Date_FIN[2])
	|| (PC_Date[1] > PARAM_Date_FIN[1])
	|| (PC_Date[0] > PARAM_Date_FIN[0])
	|| (PC_Heure[1] > PARAM_Heure_FIN[1])
	|| (PC_Heure[0] > PARAM_Heure_FIN[0])
	|| (PC_Date[2] < PARAM_Date_DBT[2])
	|| (PC_Date[1] < PARAM_Date_DBT[1])
	|| (PC_Date[0] < PARAM_Date_DBT[0])
	|| (PC_Heure[1] < PARAM_Heure_DBT[1])
	|| (PC_Heure[0] < PARAM_Heure_DBT[0]) )
		valide=false;
if(valide == true)
  alert("engagement");
else
  alert("rien du tout");


Voilà, la c'est tout de suite mieux, plus propre et plus compréhensible comme code. Mais je ne dis pas que ca regle ton pb. Soit tu as mis de mauvais tests, soit ca vient d'avant (initialisation et remplissage de tes tableaux de données.

++
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 11:18
Je ne pense pas que sa vienne de ce que j'ai fait avant. Je peux te filer le code de ma page si tu es favorable à l'insomnie. C'est toi qui vois...

Je pense vraiment que c'est un soucis de priorité dans mes conditions. Ce que l'on à fait jusqu'à maintenant revien exactement à ce que j'avais déjà fait mais écrit sous une autre forme.

Cela dit, çà m'a inspiré. Ce qu'il faudrait, ce serait testé l'année, le mois , le jour ,l'heure puis les minutes.
Supposons les paramètres suivants:
Si la date de FIN est supérieure à celle de DEBUT alors l'heure (minutes y compris) de FIN peut être < à l'heure de DEBUT.

Je ne sais pas si tu situes bien le problème mais en tout cas, j'en suis persuadé, çà doit vraiment venir de mes conditions.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 11:45
Avant la série de test, fait un affichage des valeur de chaque variable utilisée dans les test et met le dans un post qu'on voit ensemble ce qui est affiché, et dis moi si tu vois des erreurs qqpart dans les valeur, sinon on va voir ce qui ne va pas dans tes tests alors...
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
10 mai 2005 à 12:23
NON, tous les IF doivent etres independants!
pas de ELSE! comme j'ai fait dans mon post n°1.
valide=true;
if ((valide) && (...) )  valide=false;
if ((valide) && (...) )  valide=false;
return (valide);

l'ordre des IF a une importance, tu commence par l'annee puis mois ....
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 14:17
Et alors.. ca ne change rien de rien car l'odre d'éxécution de :
if( (test1) || (test2) || (test3) )
   truc = false;

est le suivant :
si test1 = ok alors on tente test2
si test2 = ok alors on tente test3,
etc..

Donc tant qu'il met ses test dans le bon ordre, cela ne changera rien.
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
10 mai 2005 à 14:34
non, c'est pas la meme chose!
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 14:59
J'ai décidé de partir sur un truc totalement différent.
Je vous fait part du code si çà vous dit de le décortiquer.


Là, je fais une comparaison entre les dates de début et les dates de fin (idem avec l'heure)

/* Comparaison Date Début */
	if (PC_Date[2] > PARAM_Date_DBT[2])
	{
		comp_annee_DBT = 1;
	}
	else comp_annee_DBT = 0;
	
	if (PC_Date[1] > PARAM_Date_DBT[1])
	{
		comp_mois_DBT = 1;
	}
	else comp_mois_DBT = 0;
	
	if (PC_Date[0] > PARAM_Date_DBT[0])
	{
		comp_jour_DBT = 1;
	}
	else comp_jour_DBT = 0;
	
	Comp_Date_DBT = comp_annee_DBT + comp_mois_DBT + comp_jour_DBT;
	
	if (Comp_Date_DBT != 0)
	{
		Date_DBT = 1;
	}
	else Date_DBT = 0;
	
/* Comparaison Date Fin */
	if (PC_Date[2] < PARAM_Date_FIN[2])
	{
		comp_annee_FIN = 1;
	}
	else comp_annee_FIN = 0;
	
	if (PC_Date[1] < PARAM_Date_FIN[1])
	{
		comp_mois_FIN = 1;
	}
	else comp_mois_FIN = 0;
	
	if (PC_Date[0] < PARAM_Date_FIN[0])
	{
		comp_jour_FIN = 1;
	}
	else comp_jour_FIN = 0;
	
	Comp_Date_FIN = comp_annee_FIN + comp_mois_FIN + comp_jour_FIN;
	
	if (Comp_Date_FIN != 0)
	{
		Date_FIN = 1;
	}
	else Date_FIN = 0;
	

/* Comparaison Heure Début */
	if (PC_Heure[1] > PARAM_Heure_DBT[1])
	{
		comp_heure_DBT = 1;
	}
	else comp_heure_DBT = 0;
	
	if (PC_Heure[0] > PARAM_Heure_DBT[0])
	{
		comp_minute_DBT = 1;
	}
	else comp_minute_DBT = 0;
	
	Comp_Heure_DBT = comp_heure_DBT + comp_minute_DBT;
	
	if (Comp_Heure_DBT != 0)
	{
		Heure_DBT = 1;
	}
	else Heure_DBT = 0;


/* Comparaison Heure FIN */
	if (PC_Heure[1] < PARAM_Heure_FIN[1])
	{
		comp_heure_FIN = 1;
	}
	else comp_heure_FIN = 0;
	
	if (PC_Heure[0] < PARAM_Heure_FIN[0])
	{
		comp_minute_FIN = 1;
	}
	else comp_minute_FIN = 0;
	
	Comp_Heure_FIN = comp_heure_FIN + comp_minute_FIN;
	
	if (Comp_Heure_FIN != 0)
	{
		Heure_FIN = 1;
	}
	else Heure_FIN = 0;








Ca, c'est le test:


	if (Date_FIN > Date_DBT)
	{
		alert ("ACTIVATION:\n\nDate_FIN > Date_DBT");
	}
	else if (Date_FIN = Date_DBT)
	{
		if (Heure_Fin > Heure_DBT)
		{
			alert ("ACTIVATION:\n\nDate_FIN = Date_DBT\nHeure_Fin > Heure_DBT");
		}
		else
		{
			alert ("DEFAUT:\n\nDate_FIN = Date_DBT\nHeure_Fin > Heure_DBT");
		}
	}
	else
	{
		alert ("DEFAUT:\n\nDate_FIN > Date_DBT");
	}



Evidemment, çà ne marche pas encore mais je pense que çà ressemble un peu plus au chemin à suivre.

Si çà vous inspire, faites moi part de vos impressions. Il est normal que vous ne comprenez pas tout. Vous êtes pas dans ma tête pour savoir ce que je cherche à faire et j'ai parfois un peu de mal à m'exprimer.

Nico
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 14:59
Et en quoi ?
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
10 mai 2005 à 15:07
par ce que, si par exemple, l'annee est valide et l'heure n'est pas valide, il va tout de meme executer le code: valide=false
0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 15:29
Alors voila, çà commence à répondre à mes attentes.

Si la date FIN est > à la date DBT, l'heure FIN peut être < ou >. Et l'ACTIVATION est donc OK. C'est l'un des points qui m'intéressait.



PROBLEME à régler:

Il suffit que l'un des éléments de la date FIN soit > à l'un des éléments de la date DBT pour avoir activation. (ex.: Si le jour FIN est > au jour DBT, il se fout du mois et ACTIVATION)

Si la date Fin = date DBT, que l'heure FIN soit > ou < à l'heure DBT il n'y a pas d'activation.

voila, je vais continuer à regarder çà
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mai 2005 à 16:04
ah d'accord... dans ce cas oui, la suite des if ne va pas en effet.

Est-ce que ca ca irai ? :
 si (  jour > jour_deb ) alors
       si ( mois >=  mois_deb ) alors
             si ( annee >= annee_deb ) alors
                   truc = true;
             sinon
                   truc = false;
             fsi
        sinon
             si ( annee > annee_deb ) alors
                   truc = true;
             sinon
                   truc = false;
             fsi
       fsi
  sinon si ( jour == jour_deb ) alors
       si ( mois > mois_deb ) alors
             si ( annee >= annee_deb ) alors
                   truc = true;
            sinon
                   truc = false;
            fsi
       sinon si ( mois <= mois_deb ) alors
            si ( annee > annee_deb ) alors
                   truc = true;
            sinon
                   truc = false;
            fsi
       fsi
   sinon
       si ( mois > mois_deb ) alors
             si ( annee >= annee_deb ) alors
                    truc = true;
             sinon
                    truc = false;
             fsi
       sinon
             si ( annee > annee_deb ) alors
                    truc = true;
             sinon
                    truc = false;
             fsi
      fsi
   fsi           

Voilà, c'est un algo tres lourd mais qui peut marcher, cependant je n'ai pas intégré l'heure car trop long et pas que ca a faire.


LA solution serait plutot de transformer tes deux date en secondes et comparer les résultat !
C'est tout de suite plus simple et plus rapide... si c'est bien ca que tu veux !

++
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
10 mai 2005 à 16:14
ahh, ces listes de codes! trop long et lent!
mais la proposition de "kij_82" est excellente!
tu pourra utiliser la formule (c'est pas trop exact de point de vu logique, mais ça fonctionne tres bien):
instant_debut=((((((annee_debut*12)+mois_debut)*31+jours_debut)*24+heure_debut)*60+minute_debut)*60+seconde_debut)
instant_fin=((((((annee_fin*12)+mois_fin)*31+jours_fin)*24+heure_fin)*60+minute_fin)*60+seconde_fin)
instant_systeme=((((((annee_systeme*12)+mois_systeme)*31+jours_systeme)*24+heure_systeme)*60+minute_systeme)*60+seconde_systeme)

valide=(instant_systeme>instant_debut) && (instant_systeme<instant_fin)


0
nrobin Messages postés 49 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 22 avril 2008 1
10 mai 2005 à 16:57
Ma question s'adresse à kij_82 en particulier.

Quand tu dis "truc=true" ou "truc=false", tu parles de quoi?
C'est toujours le même truc dans tous les cas?

Est-ce que ton "truc=true" correspond à mon alert ("ACTIVATION"); et "truc=false" à mon alert ("DEFAUT");?????
0