Control date [Résolu]

laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 4 janv. 2006 à 22:59 - Dernière réponse : laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention
- 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
Afficher la suite 

11 réponses

Répondre au sujet
biv83 8 Messages postés vendredi 7 octobre 2005Date d'inscription 5 janvier 2006 Dernière intervention - 5 janv. 2006 à 22:21
+3
Utile
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>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de biv83
biv83 8 Messages postés vendredi 7 octobre 2005Date d'inscription 5 janvier 2006 Dernière intervention - 5 janv. 2006 à 00:06
0
Utile
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>
Commenter la réponse de biv83
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 10:20
0
Utile
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
Commenter la réponse de laubro
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 11:07
0
Utile
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
Commenter la réponse de laubro
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 11:13
0
Utile
non en fait marche pas non plus
ne control que le chiffre du jour et encore que entre 1 et 9

Laubro
Commenter la réponse de laubro
biv83 8 Messages postés vendredi 7 octobre 2005Date d'inscription 5 janvier 2006 Dernière intervention - 5 janv. 2006 à 12:05
0
Utile
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 !!!!!
Commenter la réponse de biv83
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 12:49
0
Utile
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
Commenter la réponse de laubro
biv83 8 Messages postés vendredi 7 octobre 2005Date d'inscription 5 janvier 2006 Dernière intervention - 5 janv. 2006 à 13:00
0
Utile
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
);
}
Commenter la réponse de biv83
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 21:12
0
Utile
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
Commenter la réponse de laubro
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 23:15
0
Utile
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
Commenter la réponse de laubro
laubro 186 Messages postés jeudi 23 décembre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 5 janv. 2006 à 23:16
0
Utile
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
Commenter la réponse de laubro

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.