Switch sur des variables _POST

Eléphanteau du PHP | 24 Messages

24 déc. 2006, 11:37

Bonjour,

Je souhaite

En effet, j'ai une page qui comprend plusieurs formulaires avec plusieurs boutons "submit", qui ont (naturellement !) un nom différent.

Après la saisie, je souhaite donc que mon code détecte le bouton qui a été pressé, avec une instruction de la forme suivante :
if(isset($_POST['form_a']))
{
// traitement des informations provenant du formulaire "A"
}
elseif(isset($_POST['form_b']))
{
// traitement des informations provenant du formulaire "B"
}
else... // traitement suivant
Néanmoins, je trouverai plus élégant d'écrire un switch. J'ai donc testé plusieurs écritures, mais ça ne fonctionne pas.

Voici le code en erreur :
  switch (isset($_POST['bouton']))
{
case 'bouton'=='form_a':
{
// traitement des informations provenant du formulaire "A"
}
case 'bouton'=='form_b':
{
// traitement des informations provenant du formulaire "B"
}
}
endswitch;
else
{ // traitement suivant
"Endswitch" me semble inutile, mais je l'ai ajouté après testé les propositions du Manuel Php.

J'ai aussi testé avec "break" après la seconde instruction, mais ça ne change rien.

Enfin, j'ai écrit
switch (isset($i))
en modifiant l'intitulé des branchements conditionnels, sans y trouver mon bonheur.

Merci de votre aide.

Je souhaite un joyeux Noël aux lecteurs et aux contributeurs de PhpFrance. :D

Cordialement,

I.

ViPHP
ViPHP | 1961 Messages

24 déc. 2006, 14:01

Bonjour, et Joyeux Noël à toi aussi.

La super globale $_POST[] est un tableau associatif et comme tu le fais dans ton écriture avec des if, le nom de la clé est différent à chaque fois et tes tests s'effectuent sur cette clé.

Si tu veux absolument le faire avec un switch() tu devrais passer par une structure du genre
foreach($_POST as $key => $value){
   switch($key){
      case 'form_a' : // Action pour forme a
         break;
      case 'form_b' : // Action pour forme b
         break;
      default : 
         break;
   }
}
En fonction du nombre de champs dans tes formes tu risques de faire ralentir considérablement ton application, mais c'est toi qui vois.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 24 Messages

24 déc. 2006, 15:03

Merci, Ajoloca !

Même si je suis ton conseil de ne pas utiliser cette syntaxe, au moins as-tu satisfait ma curiosité intellectuelle.

Merci encore.

A bientôt,

I.