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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Récuperer une varible Javascript en php dans un formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récuperer une varible Javascript en php dans un formulaire

n°1242035
karinou
Posté le 09-11-2005 à 11:22:47  profilanswer
 

Bonjour,  
 
Je vous explique mon probleme, je suis en train de faire un formulaire avec plusieurs boutons de validation.
 
j'ai donc un formulaire avec un bouton submit général et à l'interrieur de celui-ci, l'utilisateur a la possibilité de choisir un choix dans un liste déroulante qui remplie par défaut une partie du questionnaire.
 
Il s'agit de la partie que je ne sais pas faire.  
 
Deux solutions :  
- soit faire en javascript ou je ne sais pas comment un moyen de detecter le changement dans ma liste déroulante et ensuite de recharger la page avec les champs remplis  
- soit mettre un bouton ou l'utilisateur clique quand il modifie la liste déroulante et qui recharge la page.
 
Je serai plus pour la 2eme solution parce que je ne suis pas fan du javascript, mais avec la deuxieme, je n'arrive pas à faire un formulaire avec 2 bouton submit. J'ai donc essayé de faire avec un lien simple sur le bouton valider (sans le mettre en type submit) mais je ne sais pas comment envoyer le resultat de ma liste déroulante).
 
Voyez-vous mon probleme???
 
un peu de code si jamais ca peut vous aider mais c'est pas tres clair :s

Code :
  1. Formulaire principal
  2. <form name="formEntreprise" action="?a=validerEntreprise">
  3.      <select name="entreprise">
  4.       <option value="null"></option>';
  5.      $query = "SELECT idEntreprise, nomEntreprise FROM entreprise";
  6.      $result = mysql_query($query);
  7.      while ($row = mysql_fetch_row($result)){
  8.       $idE = $row[0];
  9.       $nomE = $row[1];
  10.       $contenu.='<option value="'.$idE.'">'.$nomE.'</option>';
  11.      }
  12.      $contenu.='</select><input type="submit" value="Valider"></form>
  13. suite du formlaire avec les champs qui doivent se remplir par defaut grace au choix fait dans la liste déroulante entreprise
  14. <input type="submit" name="valider" value="Enregister le contact">//bouton qui permet de valider le formulaire général


 
Mon probleme est donc pour la validation, l'envoi et le remplissage des infos en fonction de mon choix de la liste déroulante.
 
Je suis tout à fait consciente que mon problème n'est pas du tout clair, n'hésitez pas à me poser des questions.
 
Merci par avance, Karine


Message édité par karinou le 16-11-2005 à 15:22:43
mood
Publicité
Posté le 09-11-2005 à 11:22:47  profilanswer
 

n°1242177
olivthill
Posté le 09-11-2005 à 14:01:15  profilanswer
 

Le principe général est de n'avoir qu'un seul bouton de type submit par form. Ce bouton submit lance l'action qui est précisée dans la la balise <form action=...>.
 
Un formulaire peut avoir plusieurs boutons de type button (le type button est différent du type submit, même si l'apparence graphique d'un bouton button est la même que l'apparence graphique d'un bouton submit). Les boutons de type button peuvent déclencher des actions sur des événements. Le cas le plus commun est <input type="button" onClick="ma_fonction()" ...>
 
Dans le cas des listbox, la gestion se fait habituellement avec l'événement onChange dont le nom est un peu trompeur, car on s'attendrait plutôt à onClick (qui existe aussi, mais qui sert à autre chose). Par exemple :

Code :
  1. <select name="lstbox1" size=1 onchange="lstbox_select(this)" style=width:200px>
  2. <option value="a" selected>abricot
  3. <option value="b">banane
  4. <option value="c">cerise
  5. </select>
  6. <script language=javascript>
  7. function lstbox_select(l1) {
  8.    var option_val, option_text;
  9.    if (l1.options.selectedIndex>=0) {
  10.       option_val = l1.options[l1.options.selectedIndex].value;
  11.       alert(option_val);
  12.       option_text = l1.options[l1.options.selectedIndex].text;
  13.       alert(option_text);
  14.    }
  15. }
  16. </script>

Dans le cas d'un bouton associé à une listbox, l'action onclick fait appel à une fonction qui déterminera l'option de la listbox qui a été sélectionée avec nom_de_la_listbox.selectedIndex, comme dans l'exemple plus haut.  :)  

n°1242290
omega2
Posté le 09-11-2005 à 15:04:56  profilanswer
 

On peut trés bien utiliser plusieurs <input> de type "submit" avec un seul formulaire. Il faut alors leur mettre des noms différents ou un "value" différent afin de pouvoir déterminer quel bouton à servit à la validation du formulaire.
Le serveur recevra les infos du <input> de type "submit" qui a été cliqué exactement de la même maniére qu'il recoit les infos des autres <inpu> du formulaire.
 
Aprés,,il faut évidement que le script qui traite le résultat utilise ces données pour déterminer l'action demandé et agir en conséquence.

n°1242294
olivthill
Posté le 09-11-2005 à 15:07:13  profilanswer
 

Merci omega2 pour cette précision que je ne connaissais pas à propos des boutons submit. :)

n°1246786
karinou
Posté le 16-11-2005 à 14:51:26  profilanswer
 

Merci pour vos réponses à tous les 2.
J'ai donc choisi de faire avec la méthode javascript donc le declemenchement d'une fonction des que la liste déroulante se change.
 
Mon probleme est que quand on change le contenu de la liste déroulante des infos doivent se mettre dans des input de mon formulaire.
Ces infos sont stockes dans une base de données mysql que j'appelle avec du PHP.
Voici mon code :  

Code :
  1. <table>
  2.    <tr>
  3.     <td>
  4.      0rganisme :
  5.     </td>
  6.     <td>
  7.      <select name="entreprise" size=1 onchange="lstbox_select(this)" style=width:200px>
  8.       <option value="null" selected></option>';
  9.      $query = "SELECT idEntreprise, nomEntreprise FROM entreprise";
  10.      $result = mysql_query($query);
  11.      while ($row = mysql_fetch_row($result)){
  12.       $idE = $row[0];
  13.       $nomE = $row[1];
  14.       $contenu.='<option value="'.$idE.'">'.$nomE.'</option>';
  15.      }
  16.      $contenu.='</select>  <a href="#">Valider</a>
  17.      <br />
  18.       
  19.    
  20.          <script language=javascript>
  21.          function lstbox_select(l1) {
  22.             var option_val, option_text;
  23.             if (l1.options.selectedIndex>=0) {
  24.                option_val = l1.options[l1.options.selectedIndex].value;
  25.                alert(option_val);
  26.                option_text = l1.options[l1.options.selectedIndex].text;
  27.                alert(option_text);
  28.                ';
  29.              
  30.                echo 'option_val';
  31.                $query = "SELECT libelleVoieEntreprise, ComplementAdresseEntreprise, codePostalEntreprise, localiteEntreprise, telephoneEntreprise, mobileEntreprise, faxEntreprise, emailEntreprise FROM entreprise WHERE ....";
  32.                $result = mysql_query($query);
  33.                $row = mysql_fetch_row($result);
  34.                $adresse1 = $row[0];
  35.                $adresse2 = $row[1];
  36.                $codePostal = $row[2];
  37.                $ville = $row[3];
  38.                $telephone = $row[4];
  39.                $mobile = $row[5];
  40.                $fax = $row[6];
  41.                $email = $row[7];
  42.              
  43.             $contenu.='}
  44.          }
  45.          </script>
  46.     </td>
  47.    </tr>
  48.    <tr>
  49.     <td>
  50.      Fonction :
  51.     </td>
  52.     <td>
  53.      <input type="text" name="fonction">
  54.     </td>
  55.    </tr>
  56.   </table>
  57.   </fieldset>
  58.   <fieldset>
  59.      <legend><b>
  60.       ADRESSE: </b>
  61.      </legend>
  62.  <table>
  63.    <tr>
  64.     <td>
  65.      Adresse :
  66.     </td>
  67.     <td>
  68.      <input type="text" name="adresse1" value="'.$adresse1.'"><br />
  69.      <input type="text" name="adresse2" value="'.$adresse2.'">
  70.     </td>
  71.    </tr>
  72.    <tr>
  73.     <td>
  74.      Code postal :
  75.     </td>
  76.     <td>
  77.      <input type="text" name="codePostal" size="5" value="'.$codePostal.'">
  78.     </td>
  79.    </tr>
  80.    <tr>
  81.     <td>
  82.      Ville :
  83.     </td>
  84.     <td>
  85.      <input type="text" name="ville">
  86.     </td>
  87.    </tr>
  88.   </table>


 
Je suis tout à fait d'accord avec ceux qui diront que mon code est sale mais ma principale occupation n'est pas la, mon probleme étant assez urgent.
 
Voila.
 
Donc en fait il faudrait que je puisse récupérer l'idetifiant de l'élément cheké dans ma liste déroulante "option_val" et ensuite le mettre dans ma requete sql apres le WHERE mais je ne sais pas comment l'crire, pouvez-vous m'aider??


Message édité par karinou le 16-11-2005 à 14:55:43
n°1246897
karinou
Posté le 16-11-2005 à 16:30:03  profilanswer
 

Je n'ai pas posé mon message dans la bonne section??? J'aurais du le mettre dans la partie PHP???

n°1249648
karinou
Posté le 21-11-2005 à 11:09:06  profilanswer
 

Svp, je voudrais savoir pourquoi personne ne m'as repondu, ma question est-elle completement nulle? Dans une mauvaise partie?? Je vous promet que j'ai cherché sur Internet pour mon probleme mais je n'ai pas trouvé,  
 
S'il vous plait dites moi au moins ce qu'il ne vas pas dans mon probleme...

n°1249710
olivthill
Posté le 21-11-2005 à 12:08:52  profilanswer
 

Excuse-moi de ne pas avoir répondu, mais il était indiqué que c'était urgent, et le problème me paraissait nécessiter une longue réponse assez complexe, d'autant que je ne pas bien compris la question.

Citation :

Mon probleme est que quand on change le contenu de la liste déroulante des infos doivent se mettre dans des input de mon formulaire.


D'accord, il s'agit d'un problème, voire d'un objectif à atteindre. Mais quelle est la question ?
Pourquoi avoir inclus dans ma fonction javascript lstbox_select(l1) du code PHP ?
Les fonctions javascript s'exécutent sur la machine client, alors que le code PHP s'exécute sur le serveur. D'ailleurs je devine que c'est là où se situe le problème.
Si l'application doit aller chercher des données dans MySL lorsque l'utilisateur fait une sélection dans une listbox, alors il faut instaurer un dialogue client/server, c'est-à-dire :
 
1. Afficher une page html contenant un formulaire avec une list box
2. L'utilisateur fait une sélection
3. L'événement onchange de la listbox, ou onsubmit d'un bouton, ou l'appel à form.submit(), envoie les données au serveur
4. Le serveur récupère les données dans des $_get[] ou $_post[]
5. Le serveur va rechercher de nouvelles données dans mySQL en fonction des données de $_get[] ou $_post[]
6. Le serveur renvoie une nouvelle page html avec les nouvelles données.
 
On ne peut pas bruler les étapes et mélanger n'importe comment côté client et côté serveur. C'est toute la difficulté et tout l'art de la programmation client/serveur.
Une astuce qui est parfois employée consiste à inclure dans la première page html des données cachées qui s'afficheront par une fonction javascript lorsque l'utilisateur fera une sélection. Cela évite l'envoi d'une deuxième page par le serveur, mais c'est plus compliqué à programmer, cela allourdit la première page, et ce n'est pas toujours possible de prévoir toutes les réponses possibles pour tous les choix possibles de l'utilisateur.
 
Je suis désolu d'être un peu flou, mais cela me semble être un problème d'analyse plutôt que de programmation, et pour résoudre ce genre de problèmes, il faut bien connaître le contexte, ce que je ne peux pas ni ne veux faire ici.

n°1249917
FlorentG
Unité de Masse
Posté le 21-11-2005 à 15:05:58  profilanswer
 

Et même si tu choisis la solution JavaScript, tu va devoir te taper la solution sans Javascript, pour des questions d'accessibilité évidente. Donc commence par la no-js pour rajouter par dessus celle en JS


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

  Récuperer une varible Javascript en php dans un formulaire

 

Sujets relatifs
petit probleme formulaireOpération mathématique sur des chaines en Javascript
Envoi d'un formulaire par mailProbleme Access: assistant création formulaire ne détecte pas de champ
Est il possible de creer ce type de page avec html/javascript/phpRécupérer la taille d'un tableau associatif
Formulaire avec piece jointe[Javascript] set handler dans une classe
ecriture variable en javascriptJavascript qui contrôle la taille d'ouverture d'une fenêtre
Plus de sujets relatifs à : Récuperer une varible Javascript en php dans un formulaire


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