Récuperer une varible Javascript en php dans un formulaire - HTML/CSS - Programmation
Marsh Posté le 09-11-2005 à 14:01:15
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 :
|
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.
Marsh Posté le 09-11-2005 à 15:04:56
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.
Marsh Posté le 09-11-2005 à 15:07:13
Merci omega2 pour cette précision que je ne connaissais pas à propos des boutons submit.
Marsh Posté le 16-11-2005 à 14:51:26
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 :
|
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??
Marsh Posté le 16-11-2005 à 16:30:03
Je n'ai pas posé mon message dans la bonne section??? J'aurais du le mettre dans la partie PHP???
Marsh Posté le 21-11-2005 à 11:09:06
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...
Marsh Posté le 21-11-2005 à 12:08:52
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.
Marsh Posté le 21-11-2005 à 15:05:58
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
Marsh Posté le 09-11-2005 à 11:22:47
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
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