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

  FORUM HardWare.fr
  Programmation
  PHP

  Comment faire en PHP pour différencier plusieurs formulaires ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment faire en PHP pour différencier plusieurs formulaires ?

n°362282
samuelp
Posté le 15-04-2003 à 17:35:12  profilanswer
 

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

mood
Publicité
Posté le 15-04-2003 à 17:35:12  profilanswer
 

n°362287
El_gringo
Posté le 15-04-2003 à 17:39:08  profilanswer
 

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 !

n°362289
MagicBuzz
Posté le 15-04-2003 à 17:40:53  profilanswer
 

ou alors crée un champ de type hidden qui contient le nom du forumlaire par exemple.

n°362301
samuelp
Posté le 15-04-2003 à 17:58:26  profilanswer
 

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

n°362302
Spy-master
from Belgium
Posté le 15-04-2003 à 18:01:08  profilanswer
 

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

n°362303
Sh@rdar
Ex-PhPéteur
Posté le 15-04-2003 à 18:01:43  profilanswer
 

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
n°362308
samuelp
Posté le 15-04-2003 à 18:05:53  profilanswer
 

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 ?

n°362354
Mara's dad
Yes I can !
Posté le 15-04-2003 à 18:46:04  profilanswer
 

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é.
n°362510
MagicBuzz
Posté le 15-04-2003 à 21:53:20  profilanswer
 

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

n°362550
Sh@rdar
Ex-PhPéteur
Posté le 15-04-2003 à 22:59:31  profilanswer
 

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
mood
Publicité
Posté le 15-04-2003 à 22:59:31  profilanswer
 

n°362870
Mara's dad
Yes I can !
Posté le 16-04-2003 à 10:41:08  profilanswer
 

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é.
n°363926
MagicBuzz
Posté le 16-04-2003 à 20:03:28  profilanswer
 

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.

n°364144
Mara's dad
Yes I can !
Posté le 17-04-2003 à 00:03:07  profilanswer
 

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é.
n°364146
MagicBuzz
Posté le 17-04-2003 à 00:08:30  profilanswer
 

Ouais, c'est clair que si les règles sont correctement documentées à ce moment on a plus de liberté.

n°364174
Deadog
Dain Bramaged
Posté le 17-04-2003 à 04:41:45  profilanswer
 

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

n°364184
Profil sup​primé
Posté le 17-04-2003 à 07:14:14  answer
 

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]

n°364318
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-04-2003 à 09:30:53  profilanswer
 

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
n°364649
Mara's dad
Yes I can !
Posté le 17-04-2003 à 11:56:31  profilanswer
 

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é.
n°365686
MagicBuzz
Posté le 17-04-2003 à 21:31:16  profilanswer
 

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
n°367350
Big-Foot
Posté le 19-04-2003 à 20:58:22  profilanswer
 

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

n°367672
skylight
Made in France.
Posté le 21-04-2003 à 12:36:03  profilanswer
 

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
n°367878
Big-Foot
Posté le 21-04-2003 à 20:01:28  profilanswer
 

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 ?

n°369619
Big-Foot
Posté le 23-04-2003 à 16:32:06  profilanswer
 

:bounce:

n°369626
Mara's dad
Yes I can !
Posté le 23-04-2003 à 16:35:53  profilanswer
 

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é.
n°369637
Big-Foot
Posté le 23-04-2003 à 16:40:48  profilanswer
 

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

n°369642
Mara's dad
Yes I can !
Posté le 23-04-2003 à 16:44:45  profilanswer
 

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é.
n°369650
Big-Foot
Posté le 23-04-2003 à 16:49:50  profilanswer
 

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

n°369652
Big-Foot
Posté le 23-04-2003 à 16:50:30  profilanswer
 

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

n°369653
Mara's dad
Yes I can !
Posté le 23-04-2003 à 16:51:10  profilanswer
 

$_POST['lebouton']


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°369660
Big-Foot
Posté le 23-04-2003 à 16:56:01  profilanswer
 

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

n°369671
Mara's dad
Yes I can !
Posté le 23-04-2003 à 17:02:50  profilanswer
 

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é.
n°369697
Big-Foot
Posté le 23-04-2003 à 17:15:55  profilanswer
 

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

n°369748
Mara's dad
Yes I can !
Posté le 23-04-2003 à 17:47:41  profilanswer
 

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é.
n°369758
Big-Foot
Posté le 23-04-2003 à 18:03:17  profilanswer
 

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

n°369762
Mara's dad
Yes I can !
Posté le 23-04-2003 à 18:05:04  profilanswer
 

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é.
n°369768
Big-Foot
Posté le 23-04-2003 à 18:10:12  profilanswer
 

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 ?

n°369772
omega2
Posté le 23-04-2003 à 18:18:45  profilanswer
 

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

n°369791
Mara's dad
Yes I can !
Posté le 23-04-2003 à 18:48:08  profilanswer
 

<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é.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comment faire en PHP pour différencier plusieurs formulaires ?

 

Sujets relatifs
Tri PHP ...[Oracle&SQL].sql contenant la creation de plusieurs triggers (RESOLU)
Comment envoyer la valeur d'une variable PHP d'une page à une autre ?[PHP-MySQL] Quel portail utiliser chez free ?
Objet PHP, Variable et generation automatiquePOuvez vous me donnez le nom d'un bon editeur de PHP ?
[PHP] Editer un fichier[PHP] Convertir une valeur contenant un espace -> valeur avec %20
PHP & FTP[PHP] comment passer la valeur d'une var javaScript à une $var php ?
Plus de sujets relatifs à : Comment faire en PHP pour différencier plusieurs formulaires ?


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