Intervalle de dates

Messages postés
125
Date d'inscription
jeudi 26 mai 2005
Statut
Membre
Dernière intervention
22 septembre 2019
- - Dernière réponse :  pinballWizard - 14 nov. 2019 à 09:18
Bonjour,

J'ai deux dates DateDebut et DateFin dans mon formulaire sous phpmysql.
J'aimerais interdire qu'une période de date ne puisse être sélectionné à nouveau.

--
Afficher la suite 

1 réponse

0
Merci
Salut,
il y a d'autres méthodes mais je trouve plus simple d'utiliser un timestamp pour travailler avec les dates ; que ce soit en PHP, JavaScript ou SQL: ça permet d'utiliser une base décimale en ms.
En JavaScript c'est particulièrement simple avec l'objet date.

"dans mon formulaire sous phpmysql. "
Euh un formulaire c'est toujours HTML...
Ici côté client mais rien n'empêche de faire la même chose en PHP ou directement sur la base en SQL, sauf que le faire en JavaScript d'abord évite d'avoir une requête PHP ou sur la base de données. Bien sûr l'idéal c'est d'en avoir une côté serveur pour plus de sécurité.

let datedebut=new Date(/* date -  Attention à respecter l'ordre des paramètres du constructeur exemple: new Date(year, month, day, hours, minutes, seconds, milliseconds); */);
let datefin=new Date(/* date */);
let debut=datedebut.getTime(); 
/*explication Date.getTime() ->Return Value:  A Number, representing the number of milliseconds since midnight January 1, 1970 // autrement dit un entier décimal qui évite pas mal de conversions*/
let fin=datefin.getTime();

let autreDateDebut=new Date(/* date  */ );
let autreDateFin=new Date(/* date*/);
let autreDebut=autreDateDebut.getTime();
let autreFin=autreDateFin.getTime();

function verifIntervalleTemps(){
let verifDebut = autreDebut<debut || autreDebut>fin ? true : false;/* simple vérification que la date de début du nouvel intervalle de temps ne chevauche pas l'autre créneau temps*/
let verifFin= autreFin>fin || autreFin< fin  ? true : false;

/*si les nouveaux début/fin ne sont pas compris dans le premier intervalle de temps alors c'est bon */
return verifDebut===true && verifFin===true ? true: false;
}

if(verifIntervalleTemps()===true){
//-- c'est bon validation du formulaire
}else{
//-- c'est pas bon gérer/indiquer l'erreur
}


Tout ça est améliorable (en mettant -tout en paramètres de la fonction entre autres- mais c'est assez simple dans le principe...
Commenter la réponse de pinballWizard