IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Validation d'un formulaire quand l'un des champs est optionel


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut Validation d'un formulaire quand l'un des champs est optionel
    Bonjour,

    j'ai un formulaire dont l'un des champs ( un select ) ne s'affiche que si une condition est remplie
    la valeur 1 n'affiche pas ce select , et la valeur 2 affiche le select

    lorsque dans la table mysql la condition est à 2 , ce champ donc s'affiche , et apres avoir remplie le formulaire ça fonctionne bien

    par contre quant dans ma table la condition est à 1 , le champ select ne s'affiche pas comme souhaité mais alors le script javascript qui suie semble attendre quant meme une valeur de ce select et donc le formulaire ne fonctionne pas , je ne sais pas comment gérer ce problème

    la partie formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <label> option 1</label><select name="option1"  id="option1" >
            		<option value="<?php echo $option1 ; ?>" selected><?php echo $option1_nom ; ?></option>
    		    	<option value="1" >toto</option>
        			<option value="2" >titi</option>   
               </select>
     
    // ici le deuxieme select optionel 
     
    <?php
     
    if( $selectoption== "2" )
      echo ' <label>option 2</label><textarea  cols="60" name="option2" id="option2" > </textarea>
      
      <label> categorie option 2</label><select name="option2"  id="option2" >
      
      <option value="'.$categories_id_demand.'" selected>'.$option2_nom.'</option>
    	
        <option value="1" >toto</option>
        <option value="2" >titi</option>    
               </select>
    		      
        ';
    else
      echo 'Vous avez choisie l'option 1.  <br>.<input id="description_option1" name="description_option1" type="hidden" value="">';  ?>

    le javascript

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var option1, option2;
     
    option1 =document.getElementById('option1').value;alert(option1);
    option2 =document.getElementById('option2').value;alert(option2);
     
     
     
    	  /* Appel AJAX pour insertion en BDD */ 
        var sendAjax = $.ajax({
         type: "POST",
         url: 'base_table.php',
          data: 'option1='+option1+'&option1='+option1,success: handleResponse
    	     });
       }
       function handleResponse(){
        $('#answer').get(0).innerHTML = sendAjax.responseText;
       }
      });
     }

    merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    C'est un peu crado quand meme.

    ton javascript cherche l'id option2 dans tous les cas

    je te propose d'inclure/d'afficher le javascript de l'option 2 seulement si $selectoption == "2"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci

    j'ai d'autres champs dans le formulaire , là je n'ai mis que celui qui me pose problème

    j'ai fait ça dans le JavaScript

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     selectoption=document.getElementById('selectoption').value;alert(selectoption);
     
    if (selectoption==2) {
       option1 =document.getElementById('option1 ').value;alert(option1 );
        option2 =document.getElementById('option2 ').value;alert(option2 );
    }
    else {
      alert("test");
    }

    mais je le même résultat , il semble attendre le résultat du select optionnel , comme il n'y a rien ça ne marche pas

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    finalement je fait une séparation entre l'option 1 et l'option 2 , il y'aura une rubrique pour chacune de ces deux options plutôt que de mélanger les deux , et donc un formulaire pour chacune des options

    c’était en fait une erreur de conception dans l'arborescence de mon site

    toutefois si quelqu'un arrive à trouver la solution au problème posé à l'origine de ce post , bravo à lui et ça pourra peut être servir dans un autre contexte.

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour ,

    Je ne comprend pas bien le problème et comme tu as trouvé une solution de rechange je ne pense pas t'aider mais pourquoi ne pas tester l’existence de l'objet dom ?

    Un document.getElementById('option2') devrait renvoyer un undefined si l'élément n'existe pas. Précédemment cela bug car tu essayes d'appeler un attribut (.value) d'un objet inexistant dans le cas d'une condition à 1.

    A priori le simple test de savoir si la récupération de l'élément échoue ou réussie devrait fonctionner .

    Après je serais aussi d'avis de modifier le javascript à partir de php comme tu modifie le html. Sans faire un truc trop sale (selon mes goûts ) on pourrait alors faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var option2Status = <?= selectoption==2 ?>;
    if (option2Status == true) {
     option2 = document.getElementById('option2 ').value;alert(option2 );
    } else {
     option2 = '';
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci Terra pour ta réponse

    j'ai finalement changer mon fusil ( non chargé ) d'épaule , j'ai fait une rubrique pour chacune de ces deux options

    toutefois je testerais ta solution car je pense que ça peut être utile pour plus tard

    encore merci ( des que je test et si ça fonctionne je mettrais "résolue" )

    encore merci

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/02/2012, 14h16
  2. reset d'un formulaire malgré le maintien des champs
    Par laurentSc dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2011, 10h24
  3. Réponses: 9
    Dernier message: 06/01/2011, 20h58
  4. Formulaire avec actualisation automatique des champs
    Par Illuminati dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2008, 13h23
  5. Réponses: 3
    Dernier message: 14/06/2008, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo