Page 1 sur 1

Switch sur des variables _POST

Posté : 24 déc. 2006, 11:37
par iptima
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.

Posté : 24 déc. 2006, 14:01
par Ajoloca
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.

Posté : 24 déc. 2006, 15:03
par iptima
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.