Activation selon heure (fct° faite mais pb)
Résolu
nrobin
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
nrobin Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
nrobin Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Activation selon heure (fct° faite mais pb)
- Clé d'activation windows 10 - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Mas activation - Accueil - Windows
- Changement d'heure - Guide
- Activation office - Accueil - Bureautique
46 réponses
J'ai testé ton truc. Je n'arrive à rien avec. :(
Voila ce que j'ai fait:
Sinon, voila mes déclarations:
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;
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)
à la fin si (valide=vrai) donc tu es dans l'interval désiré
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é
Est-ce que chaque condition doit être indépendante l'une de l'autre?
De la forme:
ou pluto de la forme:
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.
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.
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 =.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui, et sisonn pour tes test, il est préférables de mettre de cette facon :
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 :
Moins on en fait, et mieux on se porte...
++
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...
++
Il n'y a toujours pas de priorité.
Le résultat est le même que précédemment.
Voila mon code:
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"); }
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
++
Pour le reste... tu dois avoir mal fait un truc qqpart mais je comprend pas ce que tu as fait
++
Tout d'abord,
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:
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++
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++
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 :
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.
++
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.
++
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.
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.
NON, tous les IF doivent etres independants!
pas de ELSE! comme j'ai fait dans mon post n°1.
l'ordre des IF a une importance, tu commence par l'annee puis mois ....
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 ....
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)
Ca, c'est le test:
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
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
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
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 çà
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 çà
ah d'accord... dans ce cas oui, la suite des if ne va pas en effet.
Est-ce que ca ca irai ? :
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 !
++
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 !
++
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):
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)