Comment faire en PHP pour différencier plusieurs formulaires ?

Comment faire en PHP pour différencier plusieurs formulaires ? - PHP - Programmation

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 :
 

Code :
  1. <form action="test.php" method="POST" name="Initialise session">
  2. ....
  3. </form>
  4. <form action="test.php" method="POST" name="Delete session">
  5. ...
  6. </form>


 
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

Reply

Marsh Posté le 15-04-2003 à 17:35:12   

Reply

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 !

Reply

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.

Reply

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 :/  
 

Reply

Marsh Posté le 15-04-2003 à 18:01:08    

ou alors le nom de ton formulaire peut rentrer dans une variable

Reply

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..)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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 ;)  
 
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..)


 
Alors ça ce serait bien etonnant  :ouch:  
 
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 ?

Reply

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 :
  1. <form action="test.php" method="POST">
  2. ....
  3. <input type="submit" name="init">
  4. </form>
  5. <form action="test.php" method="POST">
  6. ...
  7. <input type="submit" name="delete">
  8. </form>

 
 
Reste plus qu'a tester isset( $_POST['init'] ) et pareil pour delete.
 
Ou bien :
 

Code :
  1. <form action="test.php" method="POST">
  2. ....
  3. <input type="submit" name="Valider" value="Init">
  4. </form>
  5. <form action="test.php" method="POST">
  6. ...
  7. <input type="submit" name="Valider" value="Delete">
  8. </form>

 
 
Et là t'as plus qu'à vérifier la valeur de $_POST['Valider'] !


Message édité par Mara's dad le 15-04-2003 à 18:46:37

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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 !
 

Code :
  1. <form action="test.php" method="POST">
  2. ....
  3. <input type="submit" name="init">
  4. </form>
  5. <form action="test.php" method="POST">
  6. ...
  7. <input type="submit" name="delete">
  8. </form>

 
 
Reste plus qu'a tester isset( $_POST['init'] ) et pareil pour delete.
 
Ou bien :
 

Code :
  1. <form action="test.php" method="POST">
  2. ....
  3. <input type="submit" name="Valider" value="Init">
  4. </form>
  5. <form action="test.php" method="POST">
  6. ...
  7. <input type="submit" name="Valider" value="Delete">
  8. </form>

 
 
Et là t'as plus qu'à vérifier la valeur de $_POST['Valider'] !


 
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';"

Reply

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


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 15-04-2003 à 22:59:31   

Reply

Marsh Posté le 16-04-2003 à 10:41:08    

MagicBuzz a écrit :


 
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';"


 
A éviter comme la peste si on programme comme un PIED !
 
Dans ce cas, c'est la programmation qu'est à éviter, tu crois pas ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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.

Reply

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.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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é.

Reply

Marsh Posté le 17-04-2003 à 04:41:45    

Code :
  1. <form action="test.php?action=init" method="POST">
  2. ....
  3. </form>
  4. <form action="test.php?action=delete" method="POST">
  5. ...
  6. </form>


 
 
j'aurais fais comme ça moi [:spamafote]
 
(pour éviter toute contreverse sus précité, action n'est évidemment pas le nom d'un qqlconque champ du formulaire ;))

Reply

Marsh Posté le 17-04-2003 à 07:14:14    

Code :
  1. <form action="test.php" method="POST"> 
  2. .... 
  3. <input type="submit" name="Valider" value="Init">
  4. </form> 
  5. <form action="test.php" method="POST"> 
  6. ... 
  7. <input type="submit" name="valider_2" value="Delete">
  8. </form>


 
et apres je teste la valeur du submit
 

Code :
  1. if(isset($Valider)
  2. blablablalblalbla
  3. if(isset($valider_2)
  4. blablabla..

 
 
ca marche nikel [:spamafote]

Reply

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 [:fear]


Message édité par antp le 17-04-2003 à 09:34:07

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-04-2003 à 11:56:31    

MagicBuzz a écrit :


 
Le hidden est donc le plus propre, quite à faire un js sur le submit genre :
 
onclick="document.myForm.monChampHidden.value='toto';"


 
Y sert à quoi le javascript dans ce cas ? ? ?
Un attribut value="toto" sur le champ hidden, c'est trop simple pour toi ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-04-2003 à 21:31:16    

Mara's dad a écrit :


 
Y sert à quoi le javascript dans ce cas ? ? ?
Un attribut value="toto" sur le champ hidden, c'est trop simple pour toi ?


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 :D


Message édité par MagicBuzz le 17-04-2003 à 21:32:01
Reply

Marsh Posté le 19-04-2003 à 20:58:22    

Mara's dad a écrit :


[...]
 
Et là t'as plus qu'à vérifier la valeur de $_POST['Valider'] !


 
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) ?

Reply

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.


Message édité par skylight le 21-04-2003 à 12:36:11
Reply

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 ?

Reply

Marsh Posté le 23-04-2003 à 16:32:06    

:bounce:

Reply

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 çà  :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 23-04-2003 à 16:40:48    

oups  :whistle:  
c'est pas ce que je voulait dire... en fait je veux recuperer son nom

Reply

Marsh Posté le 23-04-2003 à 16:44:45    

Big-Foot a écrit :

oups  :whistle:  
c'est pas ce que je voulait dire... en fait je veux recuperer son nom


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 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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

Reply

Marsh Posté le 23-04-2003 à 16:50:30    

il n'y en a 1 seul par page bien sure

Reply

Marsh Posté le 23-04-2003 à 16:51:10    

$_POST['lebouton']


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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()

Reply

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.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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...

Reply

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.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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

Reply

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.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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 ?

Reply

Marsh Posté le 23-04-2003 à 18:18:45    

Big-Foot a écrit :

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 ?

Oui, et oui.
Tout comme mettre un nom a un bouton est visible dans le code source html. ;)

Reply

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 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed