Page 1 sur 3 123 DernièreDernière
Résultats de 1 à 10 sur 28

Sujet : Java pour un formulaire dynamique

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    16

    Java pour un formulaire dynamique

    Bonjour

    J\'ai un souci avec un formulaire HTML. Dans ce formulaire j\'ai une liste déroulante avec différentes options. Suivant l\'option choisie dans cette liste, l\'utilisateur n\'a pas besoin de remplir certains champs du formulaire. J\'aurai donc aimé que une fois l\'option sélectionée dans la liste déroulante, le formulaire se mette à jour automatiquement en ne gardant que les champs interessants (en faisant des tests sur la variable passée en paramètre).
    J\'y suis presque parvenu avec ce code :
    Code:
    echo \"<script language=JavaScript>\"; 
    echo \"function reload() { 
    window.location.href=\'formulaire.php3?f_categ=$f_categ\'; 
    }\"; 
    echo \"</script>\"; 
    
    echo \"<select name=f_categ onchange=reload()> \"; 
    ... 
    echo </select>\";
    Le seul problème est que la variable $f_categ est mysterieusement vide au moment de la redirection. La page s\'actualise donc bien mais je me retrouve avec l\'url :
    http://blabla.php3?f_categ=

    Dernière chose j\'ai bien vérifié qu\'en validant mon formulaire la variable $f_categ n\'était pas vide. C\'est l\'actualisation qui ne tient pas compte du contenu des variables.

    Si quelqu\'un peut me débloquer ou me proposer une autre solution à ce problème je lui en serai grandement reconnaissant. Merci d\'avance

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Salut rab
    Tu peux envisager autre chose.
    Si je comprend bien (C pas sur) tu recharges ta page une fois la selection effectuée .?

    Soluce:

    En metant dans le onchange() du select un bou de code dans la page qui masque les champs indésirable, tu zape le rechargement (economie de bande passante et du serveur) et en plus tu fais le menage sur le formulaire.

    example :
    soit la page html suivante qui evolue dynamiquement celon les choix d\'un select

    Code:
    &lt;script language=\'Javascript\' src=\'main.js\'&gt;&lt;/script&gt;
    &lt;select id=\'S1\' name=\&quot;type\&quot; onchange=\'enable()\'&gt;
    	&lt;option id=\'O1\' value=\&quot;habitat\&quot;&gt;habitat&lt;/option&gt;
    	&lt;option id=\'O2\' value=\&quot;commerce\&quot;&gt;commerce&lt;/option&gt;
    &lt;/select&gt;
    &lt;select id=\'S2\' name=\&quot;type_habitat\&quot; onchange=\'atribuer()\'&gt;
    	&lt;option id=\'O3\' value=\&quot;terrain\&quot;&gt;terrain&lt;/option&gt;
    	&lt;option id=\'O4\' value=\&quot;maison\&quot;&gt;maison&lt;/option&gt;
    	&lt;option id=\'O5\' value=\&quot;appartement\&quot;&gt;appartement&lt;/option&gt;
    &lt;/select&gt;
    &lt;select id=\'S3\' name=\&quot;type_commerce\&quot; onchange=\'atribuer()\'&gt;
    	&lt;option id=\'O6\' value=\&quot;fond de commerce\&quot;&gt;fond de commerce&lt;/option&gt;
    	&lt;option id=\'O7\' value=\&quot;droit au bail\&quot;&gt;droit au bail&lt;/option&gt;
    	&lt;option id=\'O8\' value=\&quot;mur commerciaux\&quot;&gt;mur commerciaux&lt;/option&gt;
    &lt;/select&gt;
    &lt;input id=\'I1\' type=\'text\' name=\'TYPE_BIEN_LIBELLE\'&gt;
    &lt;script&gt;
      document.all.item(\&quot;S2\&quot;).style.display = \&quot;none\&quot;;
      document.all.item(\&quot;S3\&quot;).style.display = \&quot;none\&quot;;
    &lt;/script&gt;
    avec le code suivant dans ton fichier main.js :

    Code:
    function enable(){
    	if (document.all.item(\&quot;type\&quot;).value == \&quot;commerce\&quot;){
    	document.all.item(\&quot;S2\&quot;).style.display = \&quot;none\&quot;;
    	document.all.item(\&quot;S3\&quot;).style.display = \&quot;\&quot;;
    	document.all.item(\&quot;I1\&quot;).value = document.all.item(\&quot;S3\&quot;).value;
    	}
    	if (document.all.item(\&quot;type\&quot;).value == \&quot;habitat\&quot;){
    	document.all.item(\&quot;S2\&quot;).style.display = \&quot;\&quot;;
    	document.all.item(\&quot;S3\&quot;).style.display = \&quot;none\&quot;;
    	document.all.item(\&quot;I1\&quot;).value = document.all.item(\&quot;S2\&quot;).value;
    	}	
    }
    function atribuer(){
    	if (document.all.item(\&quot;type\&quot;).value == \&quot;commerce\&quot;){
    		document.all.item(\&quot;I1\&quot;).value = document.all.item(\&quot;S3\&quot;).value;
    	}
    	if (document.all.item(\&quot;type\&quot;).value == \&quot;habitat\&quot;){
    		document.all.item(\&quot;I1\&quot;).value = document.all.item(\&quot;S2\&quot;).value;
    	}	
    }
    Comme tu l\'aura compris il sagit ici d\'immobilier si auchargement on choisi de l\'habitat ou du commerce, les options suivantes ne sont pas les mêmes.
    L\'input de type text pourrait être un hidden le principe serait le même sauf a l\'affichage et en fin de compte au submit du form qui contient ce code tu recupère dans l\'input le resultat des selections diverse (ce qui ne correspond pas a ton prob mais ...)
    Avec quelques modif tu devrais y trouver ton bonheur !

    A bientôt :wink:

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    16
    Merci d\'avoir répondu aussi vite, je pense avoir compri le principe j\'essaye ca de suite Cela dit je n\'exclue pas la possibilité de repasser par la avant la fin de la journée ^^.

    Merci encore

    Rab

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    16
    Bon bah me revoila plus tot que prévu. Pour être honnete j\'utilise le html et le php depuis plus de 6 mois mais le java depuis hier uniquement donc si c\'est une erreur toute bete je m\'en excuse d\'avance
    A ce moment précis, lorsque que je sélectionne une option dans la liste déroulante il ne se passe rien. A signaler que tout le code ci-dessous est dans le même fichier.

    Code:
    echo \&quot;&lt;script language=\'Javascript\'&gt;\&quot;;
    echo \&quot;function affichage(){
    	if (document.all.item(\'f_categ\').value == \'Site à 300€ HT\'){
    	  document.all.item(\'f_nb_email\').style.display = \'none\';
          }\&quot;;
    echo \&quot;&lt;/script&gt;\&quot;;
    Ensuite ma liste déroulante :
    Code:
    echo \&quot;&lt;select name=f_categ onchange=affichage()&gt;\&quot;;
    ....
    echo \&quot;&lt;/select&gt;\&quot;;
    Et enfin le champ sensé \'disparaître\' après a sélection :

    Code:
    echo \&quot;&lt;tr&gt;&lt;td align=\'right\' width=\'30%\'&gt;&lt;span class=\'txtform\'&gt;\&quot;;
      if ($err_nb_mail){ echo \&quot;&lt;font color=\'red\'&gt;\&quot;; } else { echo \&quot;&lt;font color=\'black\'&gt;\&quot;; }
      echo \&quot;Nombre d\'emails souhaités*   : \&quot;;
      if ($err_nb_mail){ echo \&quot;&lt;/font&gt;\&quot;; }
      echo \&quot;&lt;/span&gt;&lt;/td&gt;&lt;td align=\'left\'&gt;&lt;input type=\'text\' style=\'width:50\' name=\'f_nb_email\' value=\'\&quot;.$f_nb_email.\&quot;\' size=\'24\' border=\'0\'&gt;&lt;/td&gt;&lt;/tr&gt;\&quot;;
    La seule chose importante dans la derniere partie de code juste au dessus c\'est le nom du champ : name=\'f_nb_email\'

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Peux tu me faire un copier coller de la page cliente dans le navigateur.
    Si tous le code est dedans elle sufira au test et la il faux tous réecrire pour tester.
    (si tu veux tu peux virer les truc pas concernés pour faire plus cour) :wink:

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    16
    Si tot dit si tot fait, j\'ai élaguer/simplifié le code un maximum. Pour résumer c\'est un formulaire basique, on remplit les champs(je n\'ai laissé que les 2 champs interessants), une fois validé vérification du contenu, envoi de mail, affichage de messages de confirmation.

    Ce que je voudrai donc c\'est que une fois l\'option sélectionnée dans la liste déroulante le deuxième champ disparaisse.

    Code:
    &lt;?
    echo \&quot;&lt;HTML&gt;\&quot;;
    echo \&quot;&lt;TITLE&gt; Formulaire &lt;/TITLE&gt;\&quot;;
    echo \&quot;&lt;BODY&gt;\&quot;;
    echo \&quot;&lt;script language=\'Javascript\'&gt;\&quot;;
    echo \&quot;function affichage(){
    	if (document.all.item(\'f_categ\').value == \'Site à 300€ HT\'){
    	  document.all.item(\'f_nb_email\').style.display = \'none\';
          }\&quot;;
    echo \&quot;&lt;/script&gt;\&quot;;
    
    
    require(\'connect.php3\');
    echo \&quot;&lt;center&gt;&lt;font color=\'blue\' size=\'5\'&gt; C\'est sympa de m\'aider ;) &lt;/font&gt;&lt;/center&gt;\&quot;;
    if($submit){
      //Verification des champs
      if(strlen($f_categ)==\&quot;\&quot;){
        $erreur.=\&quot;&lt;li&gt;&lt;span class=\'txterror\'&gt; Le champ CATEGORIE est vide ou incomplet &lt;/span&gt;\&quot;;
        $err=1;
        $err_categ=1;
      }
      if($erreur==\&quot;\&quot;){
        //Création du message administrateur
        //Création du message utilisateur    
        //Envoi des messages
      } else {
        $erreur=\&quot;Liste des erreurs :\\n\&quot;.$erreur;
        echo $erreur.\&quot;&lt;br&gt;\&quot;;
      }
    }
    //SUBMIT
    
    if($erreur!=1){
      echo \&quot;&lt;form action=\'\' name=formulaire method=\'POST\'&gt;\&quot;;
      echo \&quot;&lt;table&gt;\&quot;;
      echo \&quot;&lt;tr&gt;&lt;td colspan=\'0\'&gt;&lt;span class=\'txterror\'&gt;Les champs marqué d\'\'un * sont obligatoires&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;\&quot;;
    
      //CATEGORIE
      echo \&quot;&lt;tr&gt;&lt;td align=\'right\'&gt;\&quot;;
      echo \&quot;Catégorie* : &lt;/td&gt;\&quot;;
      echo \&quot;&lt;td&gt;\&quot;;
      echo \&quot;&lt;select name=f_categ onchange=affichage()&gt;\&quot;;
      echo \&quot;&lt;option value=\'\'&gt;&lt;/option&gt;\&quot;;
      echo \&quot;&lt;option value=\'Site à 300€ HT\'&gt;Site à 300€ HT&lt;/option&gt;\&quot;;
      echo \&quot;&lt;/select&gt;\&quot;;
      echo \&quot;&lt;/td&gt;&lt;/tr&gt;\&quot;;
    
      //EMAILS SECURISES
      echo \&quot;&lt;tr&gt;&lt;td align=\'right\' width=\'30%\'&gt;&lt;span class=\'txtform\'&gt;\&quot;;
      if ($err_nb_mail){ echo \&quot;&lt;font color=\'red\'&gt;\&quot;; } else { echo \&quot;&lt;font color=\'black\'&gt;\&quot;; }
      echo \&quot;Nombre d\'emails souhaités*   : \&quot;;
      if ($err_nb_mail){ echo \&quot;&lt;/font&gt;\&quot;; }
      echo \&quot;&lt;/span&gt;&lt;/td&gt;&lt;td align=\'left\'&gt;&lt;input type=\'text\' style=\'width:50\' name=\'f_nb_email\' value=\'\&quot;.$f_nb_email.\&quot;\' size=\'24\' border=\'0\'&gt;&lt;/td&gt;&lt;/tr&gt;\&quot;;
    
      echo \&quot;&lt;tr&gt;&lt;td align=\'right\' width=\'\'&gt;&lt;/td&gt;&lt;td&gt;&lt;input type=\'submit\' name=\'submit\' value=\'Envoyer\' border=\'0\'&gt;&lt;/td&gt;&lt;/tr&gt;\&quot;;
      echo \&quot;&lt;/table&gt;\&quot;;
    }
    echo \&quot;&lt;/BODY&gt;\&quot;;
    echo \&quot;&lt;/html&gt;\&quot;;
    ?&gt;
    Merci d\'avance

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    re ...

    Ton code contient une erreur Java script bénine (il manque la \'}\' fermante a la fonction affichage()

    mis a par cela j\'ai viré le Php et le code client HTML est donc le suivant :

    Code:
    &lt;HTML&gt;
    &lt;TITLE&gt; Formulaire &lt;/TITLE&gt;
    &lt;BODY&gt;
    &lt;script language=\'Javascript\'&gt;
    function affichage(){ 
        if (document.all.item(\'f_categ\').value == \'Site à 300€ HT\'){ 
            document.all.item(\'f_nb_email\').style.display = \'none\'; 
        }
    }
    &lt;/script&gt; 
     
    &lt;center&gt;&lt;font color=\'blue\' size=\'5\'&gt; C\'est sympa de m\'aider ;) &lt;/font&gt;&lt;/center&gt; 
    
    &lt;form action=\'\' name=formulaire method=\'POST\'&gt; 
    &lt;table&gt; 
    &lt;tr&gt;&lt;td colspan=\'0\'&gt;&lt;span class=\'txterror\'&gt;Les champs marqué d\'\'un * sont obligatoires&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; 
    
    &lt;tr&gt;&lt;td align=\'right\'&gt; 
    Catégorie* : &lt;/td&gt; 
    &lt;td&gt; 
    &lt;select name=f_categ onchange=affichage()&gt; 
    &lt;option value=\'\'&gt;&lt;/option&gt; 
    &lt;option value=\'Site à 300€ HT\'&gt;Site à 300€ HT&lt;/option&gt; 
    &lt;/select&gt; 
    &lt;/td&gt;&lt;/tr&gt; 
     
    &lt;tr&gt;&lt;td align=\'right\' width=\'30%\'&gt;&lt;span class=\'txtform\'&gt; 
    &lt;font color=\'red\'&gt;
    &lt;/font&gt;
    &lt;/span&gt;&lt;/td&gt;&lt;td align=\'left\'&gt;&lt;input type=\'text\' style=\'width:50\' name=\'f_nb_email\' value=\'contenue de l\'input\' size=\'24\' border=\'0\'&gt;&lt;/td&gt;&lt;/tr&gt; 
    
    &lt;tr&gt;&lt;td align=\'right\' width=\'\'&gt;&lt;/td&gt;&lt;td&gt;&lt;input type=\'submit\' name=\'submit\' value=\'Envoyer\' border=\'0\'&gt;&lt;/td&gt;&lt;/tr&gt; 
    &lt;/table&gt; 
    &lt;/BODY&gt; 
    &lt;/html&gt;
    Chez moi dans IE quand tu selectione \'Site à 300€ HT\' l\'input disparait.

    Attention je ne suis pas sur que le Javascript fonctionne sur autre chose que IE

    A toi de remetre tous ça dans ta page php

    en fait je pense qu\'il n\'y a que :

    Code:
    echo \&quot;&lt;script language=\'Javascript\'&gt;\&quot;;
    echo \&quot;function affichage(){
    	if (document.all.item(\'f_categ\').value == \'Site à 300€ HT\'){
    	  document.all.item(\'f_nb_email\').style.display = \'none\';
          }
    }\&quot;;
    echo \&quot;&lt;/script&gt;\&quot;;
    a faire... :wink:

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    16
    Merci bcp de te donner tant de mal
    C\'est ma pause déjeuner la j\'essaye ca cet apres midi et jte dirai si ca marche
    merciiiii

  9. #9
    Membre MP
    Inscrit
    août 2013
    Messages
    16
    L\'input disparait bien, pas de problème à ce niveau là mais dans un souci d\'esthétisme serait-il possible de faire disparaître le texte devant l\'input en même temps ?
    J\'ai bien pensé faire un input=texte pour afficher \&quot;Nombre de mails :\&quot; et utiliser le nom de l\'input=texte pour le faire disparaitre aussi avec la même fonction mais l\'utilisateur pourrait écrire à cet endroit et ça serait un peu n\'importe quoi :/

    J\'espère que c\'est assez clair (pas évident à expliquer)

  10. #10
    Visiteur MP
    Visiteur MP
    utilise un label :wink:

    &lt;label id=\&quot;Label3\&quot;&gt;Nom :&lt;/label&gt;

    :wink:

Page 1 sur 3 123 DernièreDernière

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!