Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2938 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  formulaires : forcer la saisi! !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

formulaires : forcer la saisi! !

n°521159
saxgard
Posté le 23-09-2003 à 12:23:02  profilanswer
 

Comment forcer l'utilisateur a saisir un nombre dans le formulaire?
 
merci d'avance


Message édité par saxgard le 23-09-2003 à 12:23:34
mood
Publicité
Posté le 23-09-2003 à 12:23:02  profilanswer
 

n°521160
fastclemmy
(re-)Dictateur en plastique
Posté le 23-09-2003 à 12:27:36  profilanswer
 

Un truc un peu dans ce genre là ?
http://developer.irt.org/script/1717.htm
 
Mais c'est du javascript, mieux vaut prévoir une vérification serveur derrière...

n°521166
saxgard
Posté le 23-09-2003 à 12:32:36  profilanswer
 

fastclemmy a écrit :

Un truc un peu dans ce genre là ?
http://developer.irt.org/script/1717.htm
 
Mais c'est du javascript, mieux vaut prévoir une vérification serveur derrière...


 
ya  pas moyen dans le  "type" du form de dire que c'ets un nombre et d'emepcher la saisi d'une chaine de caractère? :/
 
sinon quelle est la fonction PHP qui permet de tester si la valeur dans le champ est un nombre (décimal)?
j'ai essayer is_float mais ca ne marche pas on dirai qu'il ne teste pas sur la valeur mais sur le type de la variable.
 

n°521250
saxgard
Posté le 23-09-2003 à 13:50:43  profilanswer
 

up

n°521529
saxgard
Posté le 23-09-2003 à 17:19:49  profilanswer
 

up

n°521612
deliriumtr​emens
sic transit intestinal...
Posté le 23-09-2003 à 18:46:42  profilanswer
 

If ((empty($_POST["$var"])) OR (!is_numeric($_POST["var"])))
{echo "message d'erreur et initialisation de $var";}
 
enfin un truc du genre, je sais pas comment tu fais tes contrôles...


Message édité par deliriumtremens le 23-09-2003 à 18:50:56
n°521621
saxgard
Posté le 23-09-2003 à 18:56:36  profilanswer
 

DeliriumTremens a écrit :

If ((empty($_POST["$var"])) OR (!is_numeric($_POST["var"])))
{echo "message d'erreur et initialisation de $var";}
 
enfin un truc du genre, je sais pas comment tu fais tes contrôles...


 
je te remercie j'essayerai ca
 

n°521626
antsite
Je me souviens
Posté le 23-09-2003 à 19:02:58  profilanswer
 

et si tu ne veux pas recharger la page, tu peux rester en javascript (tout en sachant que ça peut être désactivé) avec la fonction prévue à cet effet, isNaN()

n°538058
saxgard
Posté le 13-10-2003 à 12:14:29  profilanswer
 

Voila,
 
j'aimerai savoir si il est possible de forcer la saisi d'uen date dans un formulaire:
 
c'ets a dire de mettre : --/--/-- dans le champ?mais que ca soit des caractères que l'in ne peu pas effacer!

n°538090
fastclemmy
(re-)Dictateur en plastique
Posté le 13-10-2003 à 12:55:07  profilanswer
 

Fais trois champs séparés.

mood
Publicité
Posté le 13-10-2003 à 12:55:07  profilanswer
 

n°538102
simogeo
j'ai jamais tué de chats, ...
Posté le 13-10-2003 à 13:14:10  profilanswer
 

mais il faudra quoiqu'il arrive effectuer un controle serveur ressemblant a ce que propose DeliriumTremens [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°538218
saxgard
Posté le 13-10-2003 à 14:36:20  profilanswer
 

oui la methode du controle au niveau serveur je la fais deja.
Bon bin je crois que je vais en resté soit a un choix de date dans un menu deroulant retsreint ou alors comme le propose fastclemmy , je vais separer les champs.
 
je vous remercie

n°538245
Mara's dad
Yes I can !
Posté le 13-10-2003 à 15:04:36  profilanswer
 

Voilà une fonction de vérification / formatage de date en javascript
 
Elle est relativement intelligente, par exemple si tu saisi :
1 1 1
dans le champs, elle comprends :
1/1/2001
 
Dans le même ordre d'idée :
12 8 78 => 12/8/1978
120878 => 12/8/1978
12081978 => 12/8/1978
12/08/78 => 12/8/1978
...
 
En fais si année < 50 alors année = année + 2000.
 
Bien sûr tu as le droit de saisir les / :)
 
Exemple d'utilisation :
<input id="date_debut" onChange="javascript:return checkDate(this);" type="text" name=DateDebut" />
 
Mais rien n'empèche un utilisateur de passer outre, donc comme l'ont dit les autres, il faut un vérif coté serveur.
En fait j'ai le même fonction en PHP :D
 

// Vérifie qu'une date est bien saisie dans le format JJ/MM/AAAA
// oDateToCheck est l'objet champs à vérifier
function checkDate( oDateToCheck )
{
 var dDate; // Utilisé pour générer un objet Date
 var nDate; // Utilisé pour générer une référence temporelle numérique !
 
 var aDate; // Tableau des éléments du champs de saisie séparés par de "/"
 
 
 // Messages d'erreur.  
 var sErrFormat = "La date doit être saisie dans le format JJ/MM/AAAA !";
 var sErrFormatJour = "Le jour doit être compris entre 1 et 31 !";
 var sErrFormatMois = "Le mois doit être compris entre 1 et 12!";
 var sErrFormatAnnee = "L'année doit être sur 1,2 ou 4 chiffres !";
 
 // Suppression des espaces du début
 oDateToCheck.value = oDateToCheck.value.replace( /^\s+/, "" );
 
 // Suppression des espaces de fin
 oDateToCheck.value = oDateToCheck.value.replace( /\s+$/, "" );
 
 // Remplacement des espaces par des /
 oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
 oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
 oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
 
 oDateToCheck.ok = false;
 
 //cas d'une date vide
 if( oDateToCheck.value == "" )
 {
  oDateToCheck.ok = true;
  return true;
 }
 
 // Séparation des éléments de la date.
 aDate = oDateToCheck.value.split( "/" );
 
 // On vérifie qu'on a bien 3 éléments  
 if( aDate.length != 3 )
 {
  // S'il n'y as pas de /, on découpe la chaine en 3 si sa longueur est 6 ou 8
  if( aDate.length == 1 )
  {
   if( oDateToCheck.value.length == 6 )
   {
    aDate[0] = oDateToCheck.value.substr( 0, 2);
    aDate[1] = oDateToCheck.value.substr( 2, 2);
    aDate[2] = oDateToCheck.value.substr( 4, 2);
   }
   else if( oDateToCheck.value.length == 8 )
   {
    aDate[0] = oDateToCheck.value.substr( 0, 2);
    aDate[1] = oDateToCheck.value.substr( 2, 2);
    aDate[2] = oDateToCheck.value.substr( 4, 4);
   }
   else
   {
    alert( sErrFormat );
    return false;
   }
  }
  else
  {
   alert( sErrFormat );
   return false;
  }
 }
 
 // On vérifie que c'est bien des nombres
 if( isNaN( aDate[0] ) ||  isNaN( aDate[1] ) || isNaN( aDate[2] )  )
 {
  alert( sErrFormat );
  return false;
 }
 
 // Vérification grossière sur le jour
 if( aDate[0] > 31 || aDate[0] < 1 )
 {
  alert( sErrFormatJour );
  return false;
 }
 
 // Vérification du mois
 if( aDate[1] > 12 || aDate[1] < 1 )
 {
  alert( sErrFormatMois );
  return false;
 }
 
 // Vérifier que l'année est bien sur 1, 2 ou 4 chiffres
 if( aDate[2].length != 1 && aDate[2].length != 2 && aDate[2].length != 4  )
 {
  alert( sErrFormatAnnee );
  return false;
 }
 
 // Si l'année est sur 1 ou 2 chiffres, on la remet sur 4
 if( aDate[2] < 50 )
 {
  aDate[2] = 2000 + parseInt( aDate[2] );
 }
 else
 {
  if( aDate[2] >= 50 && aDate[2] < 100 )
  {
   aDate[2] = 1900 + parseInt( aDate[2] );
  }
 }
 
 // Création d'une référence temporelle numérique à partir des élémentnt de la date  
 nDate = Date.parse( aDate[1] + "/" + aDate[0] + "/" + aDate[2]  );
 
 // Vérification que la référence temporelle est une date valide
 if( isNaN( nDate ) )
 {
  alert( oDateToCheck.value + " n'est pas une date valide !" );
  return false;
 }
 else
 {
  // On renvoie la date formatée
  dDate = new Date( nDate )
  oDateToCheck.value = dDate.getDate() + "/" + ( dDate.getMonth() + 1 ) + "/" + dDate.getFullYear();
  oDateToCheck.ok = true;
  return true;
 }
}


 
Remarque, une date vide est considérée comme bonne !
Le champs était facultatif dans mon appli.


Message édité par Mara's dad le 13-10-2003 à 15:08:56

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°538295
saxgard
Posté le 13-10-2003 à 15:34:13  profilanswer
 

Mara's dad a écrit :

Voilà une fonction de vérification / formatage de date en javascript
 
Elle est relativement intelligente, par exemple si tu saisi :
1 1 1
dans le champs, elle comprends :
1/1/2001
 
Dans le même ordre d'idée :
12 8 78 => 12/8/1978
120878 => 12/8/1978
12081978 => 12/8/1978
12/08/78 => 12/8/1978
...
 
En fais si année < 50 alors année = année + 2000.
 
Bien sûr tu as le droit de saisir les / :)
 
Exemple d'utilisation :
<input id="date_debut" onChange="javascript:return checkDate(this);" type="text" name=DateDebut" />
 
Mais rien n'empèche un utilisateur de passer outre, donc comme l'ont dit les autres, il faut un vérif coté serveur.
En fait j'ai le même fonction en PHP :D
 

// Vérifie qu'une date est bien saisie dans le format JJ/MM/AAAA
// oDateToCheck est l'objet champs à vérifier
function checkDate( oDateToCheck )
{
 var dDate; // Utilisé pour générer un objet Date
 var nDate; // Utilisé pour générer une référence temporelle numérique !
 
 var aDate; // Tableau des éléments du champs de saisie séparés par de "/"
 
 
 // Messages d'erreur.  
 var sErrFormat = "La date doit être saisie dans le format JJ/MM/AAAA !";
 var sErrFormatJour = "Le jour doit être compris entre 1 et 31 !";
 var sErrFormatMois = "Le mois doit être compris entre 1 et 12!";
 var sErrFormatAnnee = "L'année doit être sur 1,2 ou 4 chiffres !";
 
 // Suppression des espaces du début
 oDateToCheck.value = oDateToCheck.value.replace( /^\s+/, "" );
 
 // Suppression des espaces de fin
 oDateToCheck.value = oDateToCheck.value.replace( /\s+$/, "" );
 
 // Remplacement des espaces par des /
 oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
 oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
 oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
 
 oDateToCheck.ok = false;
 
 //cas d'une date vide
 if( oDateToCheck.value == "" )
 {
  oDateToCheck.ok = true;
  return true;
 }
 
 // Séparation des éléments de la date.
 aDate = oDateToCheck.value.split( "/" );
 
 // On vérifie qu'on a bien 3 éléments  
 if( aDate.length != 3 )
 {
  // S'il n'y as pas de /, on découpe la chaine en 3 si sa longueur est 6 ou 8
  if( aDate.length == 1 )
  {
   if( oDateToCheck.value.length == 6 )
   {
    aDate[0] = oDateToCheck.value.substr( 0, 2);
    aDate[1] = oDateToCheck.value.substr( 2, 2);
    aDate[2] = oDateToCheck.value.substr( 4, 2);
   }
   else if( oDateToCheck.value.length == 8 )
   {
    aDate[0] = oDateToCheck.value.substr( 0, 2);
    aDate[1] = oDateToCheck.value.substr( 2, 2);
    aDate[2] = oDateToCheck.value.substr( 4, 4);
   }
   else
   {
    alert( sErrFormat );
    return false;
   }
  }
  else
  {
   alert( sErrFormat );
   return false;
  }
 }
 
 // On vérifie que c'est bien des nombres
 if( isNaN( aDate[0] ) ||  isNaN( aDate[1] ) || isNaN( aDate[2] )  )
 {
  alert( sErrFormat );
  return false;
 }
 
 // Vérification grossière sur le jour
 if( aDate[0] > 31 || aDate[0] < 1 )
 {
  alert( sErrFormatJour );
  return false;
 }
 
 // Vérification du mois
 if( aDate[1] > 12 || aDate[1] < 1 )
 {
  alert( sErrFormatMois );
  return false;
 }
 
 // Vérifier que l'année est bien sur 1, 2 ou 4 chiffres
 if( aDate[2].length != 1 && aDate[2].length != 2 && aDate[2].length != 4  )
 {
  alert( sErrFormatAnnee );
  return false;
 }
 
 // Si l'année est sur 1 ou 2 chiffres, on la remet sur 4
 if( aDate[2] < 50 )
 {
  aDate[2] = 2000 + parseInt( aDate[2] );
 }
 else
 {
  if( aDate[2] >= 50 && aDate[2] < 100 )
  {
   aDate[2] = 1900 + parseInt( aDate[2] );
  }
 }
 
 // Création d'une référence temporelle numérique à partir des élémentnt de la date  
 nDate = Date.parse( aDate[1] + "/" + aDate[0] + "/" + aDate[2]  );
 
 // Vérification que la référence temporelle est une date valide
 if( isNaN( nDate ) )
 {
  alert( oDateToCheck.value + " n'est pas une date valide !" );
  return false;
 }
 else
 {
  // On renvoie la date formatée
  dDate = new Date( nDate )
  oDateToCheck.value = dDate.getDate() + "/" + ( dDate.getMonth() + 1 ) + "/" + dDate.getFullYear();
  oDateToCheck.ok = true;
  return true;
 }
}


 
Remarque, une date vide est considérée comme bonne !
Le champs était facultatif dans mon appli.


 
je te remercie


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  formulaires : forcer la saisi! !

 

Sujets relatifs
Pb de formulaires !Forcer la hauteur de cellules avec tableaux html
Windows : Forcer l'ecran a se mettre en veilletemplates de formulaires pour PHP
forcer liste deroulante à la valeur par défaut ?forcer une checkbox
[C#]Question sur les formulairesvalider plusieur formulaires d'un coup
[ASP] Problème de cache IE, parade pr forcer le dl d'un fichier sur le[css] @ formulaires !
Plus de sujets relatifs à : formulaires : forcer la saisi! !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR