Accueil > Forum > > > > Interdire la saisie d'une date antérieur à la 1er date saisie
Interdire la saisie d'une date antérieur à la 1er date saisie
vendredi 24 octobre 2008 à 20:51:38 |
Interdire la saisie d'une date antérieur à la 1er date saisie

bruno3591
|
Bonsoir, Je me sers d'un code java script pour afficher un calendrier qui permet de saisir une date au format Fr. J'ai un formulaire avec 2 champs date que je remplis avec ce code. J'aimerais que l'utilisateur ne puisse pas saisir une 2eme date plus récente que la 1er date saisie. Que mes 2 champs date ne fonctionnent que dans un sens. Voici le code :
|
|
vendredi 24 octobre 2008 à 20:52:15 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie
|
vendredi 24 octobre 2008 à 20:53:02 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bruno3591
|
<style>
td {font-family:Tahoma;font-size:12px}
</style>
<script language="javascript">
moisX=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
JourM=["Di","Lu","Ma","Me","Je","Ve","Sa"];
var fermable_microcal=true;
var select_old= null;
var startWeek=0;//debut de la semaine 0=dim,1=lun,...
var jourPause={0:true,6:true}; //jour de pause de la semaine
var jourFeriee={"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"};
//structure la date
function strucDate(dateX)
{return {"pos":dateX.getDay(),"jour":dateX.getDate(),"mois":dateX.getMonth()+1,"annee":dateX.getFullYear()};}
var dateS= strucDate(new Date());//date Selectionné
var dnow= strucDate(new Date());//date actuelle
//retourne le ième jour du 1er du mois
function premJourMois(mois,annee)
{return (new Date(annee,mois-1,1).getDay());}
//retourne le jour max du mois
function JmaxMois(mois,annee)
{return (new Date(annee,mois,0).getDate());}
/* Test une date si elle est correct...spécial killer*/
function testTypeDate(dateEntree)
{
tst=false;
try
{rc=dateEntree.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
} catch(e) {}
return tst;
}
//selection de la zone avec la souris
function choix(koi,code)
{
if (code)
{ select_old= koi.style.background;
koi.style.background ='#c0c0FF';
}
else
{
koi.style.background =select_old;
}
}
function testTravail(oldX,xx,jj,mm,aa)
{
styleX="font-family:Tahoma;font-size:10px;text-align:center;";
styleX+=(oldX)?"":"color:#e0e0e0;";
styleX+="cursor:hand;border-right:1px #e0e0e0 solid;border-bottom:1px #e0e0e0 solid;";
if (jourPause[xx]||jourFeriee[jj+"-"+mm]!=null) styleX+="background:#f0f0f0;";
if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) styleX+="border:2px red solid;";
return styleX;
}
//test si année bissextile
function bissextile(annee) {
return (annee%4==0 && annee %100!=0 || annee%400==0);
}
//Retourne le nombre de jour depuis le 1er janvier (num de semaine)
function nbJAnnee(dateX){
var nb_mois=[,0,31,59,90,120,151,181,212,243,273,304,334];
j=dateX.jour ; m=dateX.mois ; a=dateX.annee;
nb=nb_mois[m]+j-1 ;
if (bissextile(a) && m>2) nb++;
return nb;
}
//affiche le calendrier
function view_microcal(actif,ki,source,mxS,axS)
{
if (actif)
{
//decalage du mois su on clique sur -/+
if (mxS!=-1)
{
clearTimeout(cc);
ki.focus();
fermable_microcal=true;
dateS.mois=mxS;
dateS.annee=axS;
if (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
if (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
}
//init
Dstart=(premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
jmaxi=JmaxMois(dateS.mois,dateS.annee);
jmaxiAvant=JmaxMois((dateS.mois-1),dateS.annee);
//si on veux ajouter le numero de la semaine ...
//idxWeek=parseInt(nbJAnnee(strucDate(new Date(dateS.mois+'-01-'+dateS.annee)))/7,10)+1;
ymaxi=parseInt((jmaxi+Dstart+1)/7,10);
//generation du tableau
//--entête
htm="<table><tr style='font-size:10px;font-family:Tahoma;text-align:center;'>";
htm+="<td style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois-1)+","+dateS.annee+");\">-</td>";
htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b> "+dateS.annee+"</td>";
htm+="<td style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois+1)+","+dateS.annee+")\">+</td></tr>";
//--corps
htm+="<tr>";
//affichage des jours DLMMJVS
for (x=0;x<7;x++)
htm+="<td style='font-size:10px;font-family:Tahoma;'><b>"+JourM[(x+startWeek)%7]+"</b></td>";
htm+="</tr>"
//------------------------
for (y=0;y<=ymaxi;y++)
{
htm+="<tr>";
for (x=0;x<7;x++)
{
idxP=y*7+x-Dstart+1; //numero du jour
aa=dateS.annee;
xx=(x+startWeek)%7;
//jour du mois précedent
if (idxP<=0)
{
jj=idxP+jmaxiAvant;mm=dateS.mois-1;
if (mm==0)
{mm=12;aa--;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)' onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";
}
else if (idxP>jmaxi) //jour du mois suivant
{
jj=idxP-jmaxi;mm=dateS.mois+1;
if (mm==13)
{mm=1;aa++;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)' onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";}
else //jour du mois en cours
{
jj=idxP;mm=dateS.mois;
htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)' onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";}
}
htm+="</tr>"
}//-------------------------
htm+="</table>"
//affiche le tableau
source.innerHTML=htm;
source.style.visibility="";
} else
{
//ferme le calendrier
if (fermable_microcal)
cc=setTimeout(source.id+".style.visibility='hidden'",500);
}
}
</script>
|
|
samedi 25 octobre 2008 à 10:51:58 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bultez
|
bonjour, c'est bien le javascript donné... mais à quoi sert-il pour la question ? >>J'ai un formulaire avec 2 champs date que je remplis avec ce code. >>J'aimerais que l'utilisateur ne puisse pas saisir une 2eme date plus récente que la 1er date saisie. j'eusse préféré le formulaire avec ces 2 champs, ainsi que le contrôle que tu fais et quand ! mais un if ( date2 < date1 ) { erreur } suffira probablement ! Cordialement
|
|
samedi 25 octobre 2008 à 11:27:19 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bruno3591
|
Bonjour Bultez,
effectivement donner le code du calendrier ne va pas beaucoup aider, je n'étais pas réveillé :)
Voici le code avec le contrôle que tu proposes. Mais ça ne fonctionne toujours pas. Je peux toujours enregistrer date2 < date1 alors que j'aimerais date1 > date2
<?php
include('connection.inc.php');
if((isset($_POST['enregistrer'])) || ($dateDebut > $dateFin))
{
$id = $_POST['id'];
$nom = $_POST['liste1'];
$dateDebut = $_POST['dateDebut'];
$dateFin = $_POST['dateFin'];
$nature = $_POST['nature'];
$nbjour = $_POST['nbjour'];
$req = mysql_query("INSERT INTO absence (id, nom, nature, nbjour, debut, fin) VALUES ('','$nom','$nature','$nbjour',STR_TO_DATE(' $dateDebut', '%d/%m/%Y'),STR_TO_DATE('$dateFin', '%d/%m/%Y') )");
}
?>
|
|
samedi 25 octobre 2008 à 11:42:23 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bultez
|
toujours pas éveillé ? à 11h30 ? la bringue vendredi soir ? qu'est-ce que ce php vient faire ici ? sur le forum dhtml/javascript ! mais bon... ($dateDebut > $dateFin) t'es sûr ? et que contiennent donc ces $dateXXX ? quel est le format de saisie de ces dates ? à priori tu fais une comparaison en caractères (?) et aussi, "23/10/1933" c'est > à "20/10/2008" par exemple....
|
|
samedi 25 octobre 2008 à 11:56:53 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bruno3591
|
Pas de problème pour déplacer ce sujet si un modérateur passe par là.
Même pas la bringue hier soir ! :)
Les $dateXXX contiennent une date au format jj/mm/aaaa.
Qu'appelles-tu une comparaison en caractères ?
|
|
samedi 25 octobre 2008 à 12:00:24 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bruno3591
|
Voici la partie du formulaire contenant les champs date :
<TD><input type="text" maxlength="10" size="10" name="dateDebut" id="dateDebut" onfocus="view_microcal(true,dateDebut,microcal,-1,0);" onblur="view_microcal(false,dateDebut,microcal,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal" style="visibility:hidden;position:absolute;border:0px red dashed;background:#ffffff;"></div></td>
<TH>Au</TH>
<TD><input type="text" maxlength="10" size="10" name="dateFin" id="dateFin" onfocus="view_microcal(true,dateFin,microcal2,-1,0);" onblur="view_microcal(false,dateFin,microcal2,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal2" style="visibility:hidden;position:absolute;border:0px red dashed;background:#ffffff;"></div></td>
|
|
samedi 25 octobre 2008 à 12:08:06 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bultez
|
>>Les $dateXXX contiennent une date au format jj/mm/aaaa. >>Qu'appelles-tu une comparaison en caractères ? si tu fais if ( '26/03/1922' > '23/10/2008' ) ça donne : oui, c'est supérieur caractère par caractère, 2 :: 2 c'est = , 6 :: 3 c'est > le test retourne donc true.
|
|
samedi 25 octobre 2008 à 12:10:39 |
Re : Interdire la saisie d'une date antérieur à la 1er date saisie

bultez
|
alors soit tu convertis les dates en aaaa/mm/jj soit tu utilises date(...)
|
|
Cette discussion est classée dans : date, code, saisie, interdire, 1er
Répondre à ce message
Sujets en rapport avec ce message
Saisie de date en asp [ par breakdancer971 ]
Bonjour,j'utilise dreamweaverMxj'ai créé un formulaire ou l'on doit saisir des dates et lorsque je les enregistre quelque soit le format soit access o
pb contrôle de saisie adresse mail [ par oceane751 ]
bonsoir à tous!voilà je souhaiterais verifier si une adresse mail a bien été inscrite dans mon formulaire j'ai dejà un bout de code, qui marche même
verif_date [ par sam_12_3 ]
Salut tout le monde; j'ai un code qui permet de verifier la date saisie par l'utilisateur, mais je comprend pas trop le code. alors si quelqu'un pour
Interdire un caractère (code ASCII) [ par nougitch ]
Bonjour, J'aimerai interdire le caractère suivant : " (double quote). Son code ASCII est le 34, sauf erreur de ma part. Mais je ne sais pas comment a
Controle champ formulaire [ par flopad ]
Bonjour tout le monde, j'ai une page contenant un formulaire, je voudrais qu'on message d'alerte s'affiche lors de la validation si la date (code ci-d
date dans formulaire [ par dlgforum ]
Bonjour, Voilà, j'ai un formulaire dans lequel je saisie une date et je souhaiterai un controle pour vérifier si cette date est bien entre deux dates.
comment formater lorsqu'on saisie une date et l'heure [ par machmacha ]
bonjour tout le monde,j'ai un petit problème sur le formatage d'un champ qui contient une date + l'heure j'expose mon problème: <img src="file:///C:
correction du code [ par hassengh ]
bonjour j'ai un probleme dans cette code lorsque en fais actualisation(f5) la date configure mais moi je n'aime pas configure que je demande repondre
rajout dans une liste déroulante [ par onylink ]
Bonjour, J'aurai aimé dans une liste déroulante avoir la possibilité d'ajout une nouvelle valeur. [B]Je m'explique : [/B][U]Dans un formulaire :[/
changement de valeur de variable par comparaison [ par Nico_35136 ]
Bonjour, J'aurai besoin de votre aide, le code ci dessous utilise une librairie nommé protovis, ce code me permet d'afficher une horloge assez sympa.
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|