[PHP + JavaScript] Execution d'un script methode onSubmit [Résolu]

Messages postés
20
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
22 février 2007
- - Dernière réponse : cs_alextec
Messages postés
20
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
22 février 2007
- 22 févr. 2007 à 10:50
Bonjour à tous, ne sachant pas vraiment où mettre mon message je le met ici, désolé aux modérateurs si je me suis trompé veuillez m'en excuser...

Voilà mon souci j'ai un formulaire en php avec un script  (javascript) de vérification des champs sur la meme page.
Extrait du code :
echo"<form name='formulaire'  action='ajouterpersonne.php' method='POST' onSubmit='return verif_formulaire()'>
   <table border='0' bgcolor='' width=''>
   <tr>
        <td>  Nom : </td>
        <td>  </td>
   </tr>


   <tr>
    <td> Prenom : </td>
        <td>  </td>
   </tr>


   <tr>
    <td> Date de naissance (xx/xx/xx) : </td>
        <td> </td>
   </tr>

    <tr>
         <td></td>
         <td>
    </tr>

extrait du javascript
<script type="text/javascript">


<!--
function verif_formulaire()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer le nom!");
   document.formulaire.nom.focus();
   return false;
  }


  if(document.formulaire.prenom.value == "")  {
   alert("Veuillez entrer le prenom!");
   document.formulaire.nom.focus();
   return false;
  }

...
</script>

Je pensais qu'avec "<form name='formulaire'  action='ajouterpersonne.php' method='POST' onSubmit='return verif_formulaire()' il ne passerais qu'a la page ajouterpersonne que si le script était vrai... hors meme avec les champs vide j'ai l'impression que mon script ne s'execute pas. onSubmit n'est pas la bonne méthode ?
Je suis un peu étonné car là je ne voi pas ma faute...
Merci pour vos réponses.
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
401
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
6 juin 2011
3
Merci
Re,

Ta fonction est mal refermer, il te manquait une accolade :
 
function verif_formulaire()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer le nom!");
   document.formulaire.nom.focus();
   return false;
  }

  if(document.formulaire.prenom.value == "")  {
   alert("Veuillez entrer le prenom!");
   document.formulaire.nom.focus();
   return false;
  }

mot=document.formulaire.datenaissance.value;

if (mot.length!=10){alert
   ("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");
   return false;}
else
{
    motjour=mot.substring(0,2);motmois=mot.substring(3,5);
    motan=mot.substring(6,10);motsep=mot.charAt(2)+mot.charAt(5);}
    if (isNaN(motjour+motmois+motan)|| motan>3000 ||motan<1900 || motsep!="//"){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");return false;}
    else {choix="";}
    if (motan-(parseInt(motan/4)*4)==0){choix="bi"};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/100)*100)==0)
    {choix=""};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/400)*400)==0)
    {choix="bi"}
    switch (motmois){
    case "01":if(motjour<1 || motjour>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case"02":if(choix=="bi"){if(motjour<1 || motjour>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");return false;}}
              else{if(motjour<1 || motjour>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");return false;}};
    break;
    case "03":if(motjour<1 || motjour>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "04":if(motjour<1 || motjour>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "05":if(motjour<1 || motjour>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "06":if(motjour<1 || motjour>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "07":if(motjour<1 || motjour>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "08":if(motjour<1 || motjour>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "09":if(motjour<1 || motjour>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return;false};
    break;
    case "10":if(motjour<1 || motjour>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");return false;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");return false;};
   if(document.formulaire.adresse.value == "")  {
   alert("Veuillez saisir une adresse!");
   document.formulaire.nom.focus();
   return false;
  }
  if(document.formulaire.nbrenfants.value == "")  {
   alert("Veuillez saisir le nombre d'enfant (0 si la personne n'en a pas)");
   document.formulaire.nom.focus();
   return false;
  }
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lesdis
Messages postés
20
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
22 février 2007
3
Merci
J'ai trouver une erreur :
   
case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");return false;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");return false;} supprimer le ;  après l'accolade

   if(document.formulaire.adresse.value == "")  {
   alert("Veuillez saisir une adresse!");
   document.formulaire.nom.focus();
   return false;
  }

dommage qu'on ne puisse pas éditer ses messages...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_alextec
Messages postés
401
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
6 juin 2011
0
Merci
Bonjour,

Apres avoir testé chez moi, les seules erreures que j'ai pu voir sont :

- pas de fermeture de la balise <table>
- pas de fermeture de la balise <form>
- il manque une accolade pour refermer ta fonction verif_formulaire()

Sinon, ca fonctionne bien.

bonne prog
Commenter la réponse de lesdis
Messages postés
20
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
22 février 2007
0
Merci
Mes balises sont fermées, j'ai mis juste des parties de mon code...
Je comprends vraiment pas pourquoi sa marche pas...
Commenter la réponse de cs_alextec
Messages postés
20
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
22 février 2007
0
Merci
en faite je sais peut etre pourquoi sa ne marche pas voila tout mon javascript :
<script type="text/javascript">


<!--
function verif_formulaire()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer le nom!");
   document.formulaire.nom.focus();
   return false;
  }


  if(document.formulaire.prenom.value == "")  {
   alert("Veuillez entrer le prenom!");
   document.formulaire.nom.focus();
   return false;
  }

mot=document.formulaire.datenaissance.value;


if (mot.length!=10){alert
   ("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");
   return false;}
else
{
    motjour=mot.substring(0,2);motmois=mot.substring(3,5);
    motan=mot.substring(6,10);motsep=mot.charAt(2)+mot.charAt(5);}
    if (isNaN(motjour+motmois+motan)|| motan>3000 ||motan<1900 || motsep!="//"){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");return false;}
    else {choix="";
    if (motan-(parseInt(motan/4)*4)==0){choix="bi"};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/100)*100)==0)
    {choix=""};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/400)*400)==0)
    {choix="bi"}
    switch (motmois){
    case "01":if(motjour<1 || motjour>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case"02":if(choix=="bi"){if(motjour<1 || motjour>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");return false;}}
              else{if(motjour<1 || motjour>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");return false;}};
    break;
    case "03":if(motjour<1 || motjour>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "04":if(motjour<1 || motjour>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "05":if(motjour<1 || motjour>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "06":if(motjour<1 || motjour>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "07":if(motjour<1 || motjour>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "08":if(motjour<1 || motjour>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "09":if(motjour<1 || motjour>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return;false};
    break;
    case "10":if(motjour<1 || motjour>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");return false;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");return false;};
   if(document.formulaire.adresse.value == "")  {
   alert("Veuillez saisir une adresse!");
   document.formulaire.nom.focus();
   return false;
  }
  if(document.formulaire.nbrenfants.value == "")  {
   alert("Veuillez saisir le nombre d'enfant (0 si la personne n'en a pas)");
   document.formulaire.nom.focus();
   return false;
  }
}

Quelqu'un me trouve une erreur la dedans ?
Commenter la réponse de cs_alextec
Messages postés
20
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
22 février 2007
0
Merci
Un grand merci, pour ceux/celle que cela interesse le script de vérification de date, regarde ou la date n'est pas bonne et gere les années bixetile, je l'ai récuperais je ne sais plus ou et retoucher pour qu'il soit compatible avec le reste : c'est a dire qu'il renvoye false.

Merci encore !! 40 minutes sur une accolade....

Cordialement Alexandre.
Commenter la réponse de cs_alextec