Multiple boutons form dans le meme script PHP

Eléphanteau du PHP | 10 Messages

20 avr. 2011, 22:58

Bonjour et merci à ceux à celles qui lisent ma question,

J'ai une solution qui marche mais que c'est compliqué!

D'abord je suis d'accord avec ce que PHP France écrit concernant le forum PHP4:
PHP 4 n'est plus supporté depuis le 08/08/2008. Ce forum est fermé mais reste disponible pour consultation. Il est grand temps de s'intéresser à PHP 5...

J'ai un affichage HTML généré par un script PHP qui montre 5 différents boutons, chacun avec un code du genre :
<form method="post" action="operation.php"> ..<input type="submit" value="Select" name="submit_sd_new2"> .. </form>
Dans ce cas là HTML ne s'embarrasse pas de détails, il considère que le premier
<form> .... </form>
lu donne la destination de tout bouton form que l'on clique peut importe où dans la page html. Donc il faut avoir un deuxieme script qui filtre selon le "name" dans la commande "input" (le premier script est celui où il y a les boutons, cela peut aussi entrainer un troisième script.

Pourquoi des boutons "form", parce que c'est la seule solution cachée pour passer des variables (A chaque fois il faut passer les variables par "POST" et les reprendre à chaque début de script.), tout du moins pour ce que j'ai compris.

mais cela marche.

Ai-je encore beaucoup à apprendre de PHP, y a-t-il une approche plus légère et plus astucieuse?

Merci

Mammouth du PHP | 19672 Messages

21 avr. 2011, 00:37

Pour passer des variables sans les afficher, tu pourrais utiliser des champs input de type hidden.

Par ailleurs, j'ai un doute : est-ce que chaque bouton est dans son propre formulaire ou bien le formulaire est unique et les contient tous ?

Lorsque tu cliques sur un des multiples boutons de type submit d'un même formulaire, les données envoyées sont celles des champs de saisies, des champs cachés et du bouton cliqué. Dans la page de réception, ajoute un var_dump() de la super globale $_POST et observe le résultat en utilisant les différents boutons : tu verras que les autres boutons non utilisés sont absents.

J'ajoute quand même que ce n'est pas un problème de PHP mais de HTML ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

22 avr. 2011, 21:11

Merci Cyrano de prendre le temps de répondre pendant le week end de Pâques,

A ta question:
Pour passer des variables sans les afficher, tu pourrais utiliser des champs input de type hidden.
C'est absolument ce que je fais et c'est pourquoi j'ai autant de boutons

A ta question:
Par ailleurs, j'ai un doute : est-ce que chaque bouton est dans son propre formulaire ou bien le formulaire est unique et les contient tous ?
C'est le cas,pour chaque bouton il y a un form action au début un submit suivi d'un autre form a la fin. Quand je visualise mon fichier PHP par dreamweaver je vois bien les lignes pointillées rouges qui ne se croisent pas.

Pour compliquer le tout j'ai du rajouté un bouton en bas avec un form action qui va vers un autre fichier et ca marche.

Je ne comprends plus rien.

Merci à ceux qui comme toi répondront. :D

Joyeuses Pâques.

Eléphanteau du PHP | 10 Messages

22 avr. 2011, 21:26

Re bonjour,

Je viens de lire sur webdevelopper.com qu'en fait chaque form d'ouverture, celui où on inscrit action= peut être accompagné d'un name=.

C'est ce name qui doit absolument être différent d'un bouton à l'autre.

Il faut que je refasse dix heures de codage, mais je vais le faire.

Joyeuses Pâques. :!:

Mammouth du PHP | 19672 Messages

23 avr. 2011, 00:39

Mouais, je crois qu'une petite explication de texte est indispensable. :?

Dans une page en HTML, il est important de comprendre que le formulaire est un élément particulier. Il est tout aussi important de bien assimiler que dans une même page en HTML, chaque formulaire est indépendant des autres. Ça signifie également que lorsqu'on clique sur un bouton qui appartient à un formulaire, les données envoyées ne sont exclusivement que celle dudit formulaire. S'il existe d'autres formulaires dans la page, ils seront totalement ignorés.

Concernant l'identification du formulaire, l'attribut « name » doit effectivement être individuel pour chaque formulaire, mais cet attribut n'est valide qu'en HTML 4 : si ton code est en XHTML, il est obsolète et doit céder la place à l'attribut « id » : là, la règle est la même pour n'importe quel élément en HTML, la valeur d'un attribut « id » ne peut exister plus d'une seule fois dans une même page. en d'autres termes, chaque formulaire doit avoir son propre identifiant.

Je ne saisis pas bien ton idée d'avoir un paquet de boutons de type submit, mais si tu veux passer des valeurs sans les afficher, il n'y a que par le biais de champs input de type « hidden » que ça peut fonctionner.
Un article qui vient juste de paraitre sur le web à ce propos, avoir plusieurs boutons submit dans un même formulaire.

Enjoy ! ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: