Control date

Résolu
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 4 janv. 2006 à 22:59
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 5 janv. 2006 à 23:16
A l'aide ! recherche âme charitable
voilà, j'ai presque fini un site en php, et il ne me reste plus qu'un control de date à mettre
pour que tout soit ok, je suis dessus depuis un moment mais je n'y arrive pas, ou pas à ce que je veux, même en cherchant des sources, chacune etant differente surtout pour consititué la date...

enfin voilà, j'ai 2 champs date remplient au travers d'un calendrier, format aaaa-mm-jj
dans mon form j'ai un : onsubmit="return verifier(this)"

avec un control

if (theForm.d.value <= control2) {
alert("Attention date de début trop petite, Minimum à J+1 !");
theForm.d.focus();
return (false);
}

la date est de control est créée comme suit
<SCRIPT language="JavaScript">



aujourdhui2 = new Date();
jour2 = aujourdhui.getDate();
month2 = aujourdhui.getMonth();
annee2 = aujourdhui.getYear();
control2 = ( annee2 + "-" + month2 + "-" + jour2);
if (annee2 < 2000)
annee = annee + 1900;


</SCRIPT>

alors, si je mets month2 = aujourdhui.getMonth()+1; ça ne marche pas bien
et sans le mettre comme si dessus, ça ne marche pas sauf au mois inférieur, mais c'est bien entendu pas ce que que je voudrais......

est ce que quelqu'un aurait une autre solution, pour constituer la date par exemple, pour que cela colle avec mon format aaaa-mm-jj ????

merci
Laubro

11 réponses

biv83 Messages postés 8 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 5 janvier 2006
5 janv. 2006 à 22:21
je me suis un peu creuser le crâne....

c'est plus ça que tu recherches:


<script language= "JavaScript">

aujourdhui
=
new
Date();
jourtoday
= aujourdhui
.getDate
();
moistoday
= aujourdhui
.getMonth
()+1;
anneetoday
= aujourdhui
.getYear
();
controltoday
=
( anneetoday
+ "-"
+ moistoday
+ "-"
+ jourtoday
);

if
(anneetoday
<
2000)
{ annee
= annee
+
1900; }

function jourchamp
(sIn0
)
{

var sOut0
= ""
;
sOut0
= sIn0
.charAt
(8)+ sIn0
.charAt
(9)

return(sOut0
);
}

function moischamp
(sIn1
)
{

var sOut1
= ""
;
sOut1
= sIn1
.charAt
(5)+ sIn1
.charAt
(6)

return(sOut1
);
}

function anneechamp
(sIn2
)
{

var sOut2
= ""
;
sOut2
= sIn2
.charAt
(0)
+ sIn2
.charAt
(1)
+ sIn2
.charAt
(2)+ sIn2
.charAt
(3)

return(sOut2
);
}

function verifier
()
{
// procedure du bouton vйrifier

journewchamp
= jourchamp
(document
.form1
.textfield
.value
);

moisnewchamp
= moischamp
(document
.form1
.textfield
.value
);

anneenewchamp
= anneechamp
(document
.form1
.textfield
.value
);

alert
(anneenewchamp
+ " "
+anneetoday
);
alert
(moisnewchamp
+" "
+moistoday
);
alert
(journewchamp
+" "
+jourtoday
);

if
(
((anneenewchamp
= = anneetoday
)
&&
(moisnewchamp
== moistoday
)
&&
(journewchamp
> jourtoday
))
||
((anneenewchamp
== anneetoday
)
&&
(moisnewchamp
> moistoday
)
&&
(journewchamp
> jourtoday
))
||
((anneenewchamp
== anneetoday
)
&&
(moisnewchamp
> moistoday
)
&&
(journewchamp
< jourtoday
))
||
((anneenewchamp
== anneetoday
)
&&
(moisnewchamp
== moistoday
)
&&
(journewchamp
== jourtoday
))
||
(anneenewchamp
> anneetoday
)
)
{
alert
("la date rentrйe est SUPERIEUR а la date du jour "
);
}

else
{

alert
("la date rentrйe est INFERIEUR а la date du jour"
);
}

}
</script>
3
biv83 Messages postés 8 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 5 janvier 2006
5 janv. 2006 à 00:06
bonjour,

je t'ai fais a l'aide de diverses sources de ce site un exemple de controle de champ "date" en javascript.

il t'indique si la date entrée est inferieur ou supérieur à la date du jour.
j'espere que ça resoudra ton problème....

Pour le tester, tu as juste a mettre le script ci-dessous dans un page vierge et l'ouvrir avec IE.



<html>
<head>
<title>Document sans titre</title> <meta http-equiv"Content-Type" content"text/html; charset= iso-8859-1">
</head>

<script language ="JavaScript">
aujourdhui
=
new
Date();
jour2
= aujourdhui
.getDate
();
month2
= aujourdhui
.getMonth
();
annee2
= aujourdhui
.getYear
();
control2
=
( annee2
+ "-"
+ month2
+ "-"
+ jour2
);

if
(annee2
<
2000)
annee
= annee
+
1900;

function renverseStrDate
(sIn
) {

var sOut
= ""
;

sOut
= sIn
.charAt
(6)
+ sIn
.charAt
(7)
+ sIn
.charAt
(8)+ sIn
.charAt
(9)
+ "/"
+ sIn
.charAt
(3)+ sIn
.charAt
(4)
+ "/"
+ sIn
.charAt
(0)+ sIn
.charAt
(1)

return(sOut
);
}

function verifier
() {

todaydate
= renverseStrDate
(document
.form1
.textfield
.value
);

if
(todaydate
< control2
) {
alert
( "la date du jour est infйrieure а la date entrйe"
);
}

if
(control2
< todaydate
) {
alert
("la date du jour est supйrieure а la date entrйe"
);

}
}
</script>


<tr>
<td align ="left" nowrap rowspan= "-19" colspan ="2">
Entrez la date avec un sйparateur puis cliquez sur vйrifier.
</td>
</tr> <form name"form1" action"">


</form>
<form name"form4" action"">


</form>


</html>
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 10:20
Je te remercie pour ton aide, mais ça ne fonctionne pas

si je comprends bien, dans ton scipt todaydate est la date saisie dans le champs du formulaire remise au format souhaité
function verifier() {
todaydate = renverseStrDate(document.form1.textfield.value);

et la date du jour est control2...
si je prends ton 1er control : date saisie(todaydate) < à control2(date du jour), moi je comprends que la date du jour(control2 ) est supérieure à la date saisie(todaydate) ??? et visversa !
if (todaydate < control2) {
alert( "la date du jour est infйrieure а la date entrйe" );
}

if
(control2 < todaydate) {
alert("la date du jour est supйrieure а la date entrйe");

le terme todaydate est un peu trompeur, car todaydate = aujourd'hui, hors aujourd'hui est créer par control2 ou alors je comprends rien
car si todaydate est aujourd'hui, control2 c'est quoi ? tu vois ce que je veux dire

enfin de toute façon ça passe pas, en fait aujourd'hui on est le 2006-01-05 et si je saisie
2006-01-01 ça me dit bien que qu'aujourd'hui est supérieur(apres modif texte alert)
mais aussi pour 2006-02-01 alors que le 1 février est supérieur au 5 janvier
j'ai la bonne alert qu'a partir de 2006-03-01 jusqu'au 2006-09-30 a partir de 2006-10-01 ça replante !

je comprends pas le truc des date en javascript c'est saoulant........
Laubro
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 11:07
HO HO
Apres divers test, je me suis aperçus que cela fonctionne avec le script suivant :


<html>


<head>


<title>Document sans titre
</title>


<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1"
>


<meta name="GENERATOR"
content="Microsoft FrontPage 4.0"
>


<meta name="ProgId"
content="FrontPage.Editor.Document"
>


</head>


<script language="JavaScript"
>


aujourdhui = new Date();


jour2 = aujourdhui.getDate();


month2 = aujourdhui.getMonth();


annee2 = aujourdhui.getYear();


control2 = ( annee2 + "-" + month2 + "-" + jour2);


if (annee2 < 2000)


annee = annee + 1900;


function renverseStrDate(sIn) {


var sOut = "";


sOut = sIn.charAt(6) + sIn.charAt(7) + sIn.charAt(8)+ sIn.charAt(9) + "/" + sIn.charAt(3)+ sIn.charAt(4) + "/" + sIn.charAt(0)+ sIn.charAt(1)


return(sOut);


}


function verifier() {


todaydate = renverseStrDate(document.form1.textfield.value);


control3 = renverseStrDate(control2);


if (todaydate < control3) {


alert("la date du jour est supérieure à la date entrée");


}


if (control3 < todaydate) {


alert("la date du jour est inférieure à la date entrée");


}


if (control3 == todaydate) {


alert("la date du jour est égale à la date entrée");


}


}


</script>





----

"left" nowrap rowspan="-19"
colspan="2"
>Entrez la date avec un s&#1081;parateur

puis cliquez sur v&#1081;rifier.

,

<form name=\"form1\"
action=\"\"
>

----

</form>

<form name="form4"
action>

</form>

,



sauf que ça fonction avec les dates au format : 2006-1-1 mais mon formatage est 2006-01-01 et avec les 0 marche pas
est ce qu"il est possible au cas ou de mettre le 0 si le mois est entre 1 et 9 et le jour entre 1 et 9 ? ? ? par exemple
Laubro
0

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

Posez votre question
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 11:13
non en fait marche pas non plus
ne control que le chiffre du jour et encore que entre 1 et 9

Laubro
0
biv83 Messages postés 8 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 5 janvier 2006
5 janv. 2006 à 12:05
re,

je suis d¨¦sole pour les quelques erreurs mais je l'ai fais un peu tard hier.
j'ai juste modifier le script et je l'ai tester, il marche "normalement" correctement.


<script language= "JavaScript">

aujourdhui
=
new
Date();
jourtoday
= aujourdhui
.getDate
();
moistoday
= aujourdhui
.getMonth
()+1;
anneetoday
= aujourdhui
.getYear
();
controltoday
=
( anneetoday
+ "-"
+ moistoday
+ "-"
+ jourtoday
);

if
(anneetoday
<
2000)
{ annee
= annee
+
1900; }

function jourchamp
(sIn0
)
{

var sOut0
= ""
;
sOut0
= sIn0
.charAt
(0)+ sIn0
.charAt
(1)

return(sOut0
);
}

function moischamp
(sIn1
)
{

var sOut1
= ""
;
sOut1
= sIn1
.charAt
(3)+ sIn1
.charAt
(4)

return(sOut1
);
}

function anneechamp
(sIn2
)
{

var sOut2
= ""
;
sOut2
= sIn2
.charAt
(6)
+ sIn2
.charAt
(7)
+ sIn2
.charAt
(8)+ sIn2
.charAt
(9)

return(sOut2
);
}

function verifier
()
{
// procedure du bouton v§Ûrifier

journewchamp
= jourchamp
(document
.form1
.textfield
.value
);

moisnewchamp
= moischamp
(document
.form1
.textfield
.value
);

anneenewchamp
= anneechamp
(document
.form1
.textfield
.value
);

alert
(anneenewchamp
+" "
+anneetoday
);
alert
(moisnewchamp
+" "
+moistoday
);
alert
(journewchamp
+" "
+jourtoday
);

if
(anneenewchamp
< anneetoday
)
{
alert
("la date rentr§Ûe est INFERIEUR §Ñ la date du jour (AN)"
);
}

else
{

if
(moisnewchamp
> moistoday
)
{
alert
("la date rentr§Ûe est SUPERIEUR §Ñ la date du jour (mois)"
);
}

else
{

if
(journewchamp
< jourtoday
)
{
alert
("la date rentr§Ûe est INFERIEUR §Ñ la date du jour (jour)"
);
}

else
{
alert
("la date rentr§Ûe est SUPERIEUR §Ñ la date du jour jour yessssss"
);

}

}

}

}
</script>

PS: A MORT LES DATES !!!!!
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 12:49
Suis désolé, mais pas a tous les coups
exemple

tu rentre 2006-01-06 c'est supérieure = ok
mais avec 2006-01-01 c'est aussi supérieure ! ! ?
par contre avec 2006-1-1 là c'est bien inférieure....

tu vois quoi
Laubro
0
biv83 Messages postés 8 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 5 janvier 2006
5 janv. 2006 à 13:00
re,
tu dois rentrés la date dans ton champ au format jj/mm/aaaa

et la ça marche correctement.

si tu veux utiliser dans ton champ le format aaaa/mm/jj
tu dois mettre:


function jourchamp
(sIn0
)
{

var sOut0
= ""
;
sOut0
= sIn0
.charAt
(8)+ sIn0
.charAt
(9)

return(sOut0
);
}

function moischamp
(sIn1
)
{

var sOut1
= ""
;
sOut1
= sIn1
.charAt
(5)+ sIn1
.charAt
(6)

return(sOut1
);
}

function anneechamp
(sIn2
)
{

var sOut2
= ""
;
sOut2
= sIn2
.charAt
(0)
+ sIn2
.charAt
(1)
+ sIn2
.charAt
(2)+ sIn2
.charAt
(3)

return(sOut2
);
}
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 21:12
merci de te dechirer pour moi, sauf que tu va me trouver chiant surement, mais ta derniere version, control la date en 3 parties : année, puis mois, puis jour et pour aller au bout il faut que les 3 parties controlées soient supérieure mais de façon indépendante, je veux dite que :
-l'année doit être supérieure
-puis le mois doit être supérieure
-puis le jour doit être supérieure

par exemple 2006-01-05 (aujourd'hui quoi) est bien supérieure à 2006-01-04 et inférieure à 2006-01-06
mais par contre : 2006-02-04 est retourné comme inférieure à 2006-01-05 car 04 est inférieure à 05, tu vois ?

moi il me faut un control de la date en 1 entier(si je puis dire), c'est a dire que toutes les date (aaaa-mm-jj)supérieures à aujourd'hui soient retournées comme supérieures
donc 2006-02-04 doit être sup de 2006-01-05

le premier script qu ta m'avais proposé ressemble plus à mon beoin il me semble, mainetant, faut trouver l'astuce....
Laubro
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 23:15
OK MERCI

Là on est bon, ça va bien tout plein, et encore plein de merci, je ne me voyais pas trouver ça tout seul
Laubro
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
5 janv. 2006 à 23:16
OK MERCI

Là on est bon, ça va bien tout plein, et encore plein de merci, je ne me voyais pas trouver ça tout seul
Laubro
0
Rejoignez-nous