Comment faire en PHP pour différencier plusieurs formulaires ? - PHP - Programmation
Marsh Posté le 15-04-2003 à 17:39:08
Je doute que le nom du formulaire soit transmis. Pour différencier le traitement à effectuer selon le formulaire validé, t'as qu'a passer en paramètre de ton url d'action nu paramèter différent pr chaque formulaire !
Marsh Posté le 15-04-2003 à 17:40:53
ou alors crée un champ de type hidden qui contient le nom du forumlaire par exemple.
Marsh Posté le 15-04-2003 à 17:58:26
MagicBuzz a écrit : ou alors crée un champ de type hidden qui contient le nom du forumlaire par exemple. |
Mouais, faut faire avec ce qu'on a alors
Marsh Posté le 15-04-2003 à 18:01:08
ou alors le nom de ton formulaire peut rentrer dans une variable
Marsh Posté le 15-04-2003 à 18:01:43
le plus simple c'est encore de sélectionner le form en fonction de la valeur du bouton submit
il me semble de plus que l'attribut name n'est plus valide avec XHTML (j'ai du avoir une erreur dans le validateur w3c..)
Marsh Posté le 15-04-2003 à 18:05:53
Sh@rdar a écrit : le plus simple c'est encore de sélectionner le form en fonction de la valeur du bouton submit |
Alors ça ce serait bien etonnant
Bon j'ai 2 solutions : Passer par un champ hidden ou passer par le bouton submit avec l'attribution du nom du formulaire via le TAG name : Selon vous le plus propre c koi ?
Marsh Posté le 15-04-2003 à 18:46:04
Le 'name' qu'est plus valide, c'est celui du formulaire, pas celui du bouton submit !
Code :
|
Reste plus qu'a tester isset( $_POST['init'] ) et pareil pour delete.
Ou bien :
Code :
|
Et là t'as plus qu'à vérifier la valeur de $_POST['Valider'] !
Marsh Posté le 15-04-2003 à 21:53:20
Mara's dad a écrit : Le 'name' qu'est plus valide, c'est celui du formulaire, pas celui du bouton submit !
|
Cette solution est à éviter comme la peste.
En effet, le jour où tu a deux boutons dans ton formulaire, tu te rends compte de rien, mais les deux valeurs des boutons sont soumises.
Deplus, si tu crées un champs du même nom qu'un des boutons dans l'autre form, alors tu risques de te gourrer de form car la variable ayant le nom du bouton sera remplie.
Le hidden est donc le plus propre, quite à faire un js sur le submit genre :
onclick="document.myForm.monChampHidden.value='toto';"
Marsh Posté le 15-04-2003 à 22:59:31
on parle de 2 formulaires que je sache, la solution de Mara est tout à fait correcte..
en testant la valeur du bouton submit, tu sais quel form a été soumis, pas besoin de s'emmerder avec du js pour ça
Marsh Posté le 16-04-2003 à 10:41:08
MagicBuzz a écrit : |
A éviter comme la peste si on programme comme un PIED !
Dans ce cas, c'est la programmation qu'est à éviter, tu crois pas ?
Marsh Posté le 16-04-2003 à 20:03:28
Dans la vie d'un programme, il y a la phase de développement, mais il y a ensuite la maintenance. Et ta méthode est moins explicite, donc source de problèmes lors d'évolutions.
Marsh Posté le 17-04-2003 à 00:03:07
Je ne vois pas le problème si on s'impose des règles de programmations. Et celle là fait partie des miennes.
Chez moi, c'est le bouton qui indique l'action demandée.
A partir de là les traitement de l'action sait ce qu'il à a faire.
D'autre part, toujours dans les mêmes règles de prog, y'a le nommage des variables. Et chez moi les bouttons, c'est BTN_quelquechose, donc y'a pas de danger.
J'aime pas ajouter des informations parasites quand ce n'est pas absolument nécessaire.
Marsh Posté le 17-04-2003 à 00:08:30
Ouais, c'est clair que si les règles sont correctement documentées à ce moment on a plus de liberté.
Marsh Posté le 17-04-2003 à 04:41:45
Code :
|
j'aurais fais comme ça moi
(pour éviter toute contreverse sus précité, action n'est évidemment pas le nom d'un qqlconque champ du formulaire )
Marsh Posté le 17-04-2003 à 07:14:14
Code :
|
et apres je teste la valeur du submit
Code :
|
ca marche nikel
Marsh Posté le 17-04-2003 à 09:30:53
MagicBuzz a écrit : onclick="document.myForm.monChampHidden.value='toto';" |
Du Javascript qui devient nécessaire au fonctionnement du formulaire
Marsh Posté le 17-04-2003 à 11:56:31
MagicBuzz a écrit : |
Y sert à quoi le javascript dans ce cas ? ? ?
Un attribut value="toto" sur le champ hidden, c'est trop simple pour toi ?
Marsh Posté le 17-04-2003 à 21:31:16
Mara's dad a écrit : |
Bah disons qu'en fait, je mesert des mêmes templates de script quand j'ai deux forms dans une même page, ou plusieurs boutons dans un même form.
Mon JS n'est en effet utile que lorsque tu as deux boutons, par exemple un "enregister", et un "supprimer" qui sont dans le même form.
De toute façon, généralement, quand j'ai deux forms, j'ai deux pages de traîtement différentes, donc je me pose rarement la question
Tu met ce script sur chacun des deux, qui mettent à jour un champs hidden "todo" et en fonction de ce champ, tu sais ce que tu veux faire.
Une solution très porc, que j'ai utilisé qu'une seule fois, parceque je m'en suis mordu les doigts en maintenance après, consiste à appeler les boutons par le même nom, puis tester leur valeur dans la page de traîtement (comme pour un bouton radio, c'est le libellé du bouton cliqué qui est soumis). Seulement, le jour où tu passes en multi-lingue, ben tu pleures
Marsh Posté le 19-04-2003 à 20:58:22
Mara's dad a écrit : |
et est ce que je peu au lieu verifier si un nom exist, tout simplement recuperer le nom du submit (si il n'a pas plus de 1 bouton sur ma page) ?
Marsh Posté le 21-04-2003 à 12:36:03
Le mieux étant :
if ($_POST['submit'] == "Valider"]) {
} else if ($_POST['submit'] == "Init" ) {
}
Et nommer ses 2 boutons pareil, mais avec des valeurs différentes.
Marsh Posté le 21-04-2003 à 20:01:28
Si on a qu'un seul bouton, comment on recupere sa valeur sur la page suivante (sans faire de if) ? C'est possible au moins ?
Marsh Posté le 23-04-2003 à 16:35:53
Big-Foot a écrit : Si on a qu'un seul bouton, comment on recupere sa valeur sur la page suivante (sans faire de if) ? C'est possible au moins ? |
Par son nom, pardi !
Pas la peine d'invoquer les dieux de la prog pour çà
Marsh Posté le 23-04-2003 à 16:40:48
oups
c'est pas ce que je voulait dire... en fait je veux recuperer son nom
Marsh Posté le 23-04-2003 à 16:44:45
Big-Foot a écrit : oups |
Alors, là, je sais pas, heu, regarde le source du formulaire, y'aura peut-être une info.
Celà dit, c'est pas sûr, hein !
Des foit on tombe sur des boutons anonymes, et la faut ce méfier car en général, c'est des théraurystes !
Marsh Posté le 23-04-2003 à 16:49:50
le source du formulaire ??
dans mon formulaire j'ai un bouton submit avec un name="lebouton" et je voudrai recuperer ce nom pour differencier plusieurs forumlaires
Marsh Posté le 23-04-2003 à 16:51:10
$_POST['lebouton']
Marsh Posté le 23-04-2003 à 16:56:01
oui mais je peu pas faire l'inverse ? je met $_POST et lui me retourne 'lebouton' pask sinon je serais obligé de passer par des if()
Marsh Posté le 23-04-2003 à 17:02:50
Et t'en fais quoi du 'lebouton' ?
Faudra bien que tu fasse des if(), non ?
Bref, y'a pas à tortiller, soit tu teste la valeur du $_POST['lebouton'], soit je ne comprends rien à ce que tu veux faire.
Marsh Posté le 23-04-2003 à 17:15:55
en fait si je veut recuperer le nom du submit et pas ca valeur c'est pask je voudrai lui donner le nom d'une table mysql. Et de cette facon je pourais transmettre le nom de cet table a la page suivante (celle qui affiche les resultats).
euh je sais pas si j'ai était tres clair...
Marsh Posté le 23-04-2003 à 17:47:41
Ben là c'est LE truc à ne pas faire !
Il ne faut pas faire confiance au client !
Qui te dis que tu recevras bien le bon nom de table ?
Piste :
Dans tous tes formulaires :
<input type="submit" name="lebouton" value="n">
Où n est un nombre ou ce que tu veux ( mais de préférence un nombre !)
dans ton code :
$tables[1] = "Ma_table_un";
$tables[2] = "Ma_table_deux";
...
Et ensuite :
$ma_table = $tables[$_POST['lebouton']]
En vérifiant bien sûr que $_POST['lebouton'] contien un indice valide.
Marsh Posté le 23-04-2003 à 18:03:17
a ouai bonne idée !
mais il y a un truc c'est qu'on vera la "value" sur le bouton non ? et dans tou ces formulaires le bouton devrait avoir le meme nom
Marsh Posté le 23-04-2003 à 18:05:04
Alors tu fais comme le dis MagicBuzz.
Tu utilise un champs caché au lieu du bouton.
Marsh Posté le 23-04-2003 à 18:10:12
ok j'y pensait justement.
encore un petit truc : un champs caché c'est visible dans le code source html non ?
et quand on dit qu'il est invisible, en peut meme le mettre entre 2 lettres d'un mots et a l'affichage il n'y aura meme pas d'espace ?
Marsh Posté le 23-04-2003 à 18:18:45
Big-Foot a écrit : ok j'y pensait justement. |
Oui, et oui.
Tout comme mettre un nom a un bouton est visible dans le code source html.
Marsh Posté le 23-04-2003 à 18:48:08
<input type="hidden" name="toto" value="xxx">
Invisible à l'écran, mais bien sur visible dans le code, le navigateur n'est pas devin !
Marsh Posté le 15-04-2003 à 17:35:12
Bonjour,
j'aimerai savoir si en PHP, il etait possible de differencier des formulaires par leur nom.
JE m'explique :
si je fais :
Maintenant si je fais un phpinfo() je n'arrive pas à obtenir le nom du formulaire dans les variables PHP !
Existe t-il par le biais de PHP d'extraire le nom du formulaire afin de classer les différents traitements à effectuer ?
Merci