75 votes

Comment puis-je savoir quel bouton a été cliqué dans un formulaire PHP ?

J'ai plusieurs boutons sur ma page, mais je ne sais pas comment dire lequel a été cliqué. Voici le balisage de mes deux boutons :

<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />

141voto

goat Points 17643

Avec un formulaire html comme :

<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />

Le code php à utiliser serait le suivant :

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    //something posted

    if (isset($_POST['btnDelete'])) {
        // btnDelete
    } else {
        //assume btnSubmit
    }
}

Vous devez toujours assumer ou choisir par défaut le premier bouton d'envoi à apparaître dans le code source html du formulaire . En pratique, les différents navigateurs envoient de manière fiable le nom/la valeur d'un bouton d'envoi avec les données du message lorsque :

  1. L'utilisateur clique littéralement sur le bouton d'envoi avec la souris ou le dispositif de pointage.
  2. Ou bien le focus est sur le bouton "submit" (ils ont cliqué dessus), puis la touche "enter" est pressée.

Il existe d'autres façons de soumettre un formulaire, et certains navigateurs/versions décident de l'utilisation du formulaire. de ne pas envoyer le nom/la valeur des boutons d'envoi. dans certaines de ces situations. Par exemple, de nombreux utilisateurs soumettre des formulaires en appuyant sur la touche Entrée lorsque le curseur/focus est sur un champ de texte. Les formulaires peuvent également être soumis via javascript, ainsi que par d'autres méthodes plus obscures.

Il est important de prêter attention à ce détail, sinon vous pouvez vraiment frustrer vos utilisateurs lorsqu'ils soumettent un formulaire, mais que "rien ne se passe" et que leurs données sont perdues parce que votre code n'a pas détecté une soumission de formulaire.

Je suis conscient que pratiquement tous les tutoriels de code de gestion des formulaires côté serveur ne font rien de plus que de vérifier le nom et la valeur d'un bouton d'envoi. Mais, ils sont tout simplement faux !

11voto

MiffTheFox Points 10537

En HTML :

<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />

En PHP :

if (isset($_POST["btnSubmit"])){
  // "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
  // "Delete" clicked
}

1voto

Il suffit de donner l'attribut name à chaque bouton. Et vous devez adresser chaque bouton pressé à partir du script de PHP. Mais faites attention à donner un nom unique à chaque bouton. Car le script de PHP ne s'occupe que du nom la plupart du temps.

<input type="submit" name="Submit_this" id="This" />

-2voto

Karthik Points 1226

Demandez-vous en php ou en javascript.

Si c'est en php, donnez le nom de ce bouton et utilisez la méthode post ou get, après quoi vous pouvez utiliser l'option isset ou ce nom de bouton particulier est vérifié à cette valeur.

Si c'est en js, utilisez getElementById pour cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X