web-dev-qa-db-fra.com

Plusieurs boutons d'envoi php différentes actions

J'ai démarré un site Web où je veux avoir 2 boutons d'envoi distincts, dont l'un prendra les données saisies et fera quelques calculs pour les afficher sur le même écran. J'ai réussi à travailler avec:

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php">
<input type="submit" name="calc" value="Find Angle">

puis j'utilise:

if (!isset($_POST['submit'])){
Do actions, display calculations}

Maintenant, je veux un deuxième bouton d'envoi qui saisit toujours les données saisies mais qui va ensuite à une adresse différente. Existe-t-il une manière élégante de procéder?

28
Joegramming

Vous pouvez ajouter une méthode onclick au nouveau bouton d'envoi qui modifiera l'action du formulaire, puis le soumettra.

<script type="text/javascript">
  function submitForm(action) {
    var form = document.getElementById('form1');
    form.action = action;
    form.submit();
  }
</script>

...

<form id="form1">
  <!-- ... -->
  <input type="button" onclick="submitForm('page1.php')" value="submit 1" />
  <input type="button" onclick="submitForm('page2.php')" value="submit 2" />
</form>
48
Travesty3

Vous pouvez modifier l'action du formulaire en utilisant formaction = "page1.php" dans la propriété du bouton.

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php">
    <input type="submit" name="calc" value="Find Angle">

    <input type="button" type="submit" formaction="page1.php">Action 0</button>
    <input type="button" type="submit" formaction="page2.php">Action 1</button>
</form>

Remarque: l'attribut formaction de la balise button n'est pas pris en charge dans Internet Explorer 9 et les versions antérieures.

15
Pradeep

La meilleure façon de gérer plusieurs boutons de soumission consiste à utiliser la casse du commutateur dans le script d'action

<form action="demo_form.php" method="get">

    Choose your favorite subject:

    <button name="subject" type="submit" value="html">HTML</button>
    <button name="subject" type="submit" value="css">CSS</button>
    <button name="subject" type="submit" value="javascript">Java Script</button>
    <button name="subject" type="submit" value="jquery">jQuery</button>

</form>

Script côté action/serveur:

demo_form.php

<?php

switch($_REQUEST['subject']) {

    case 'html': //action for html here
                break;

    case 'css': //action for css here
                break;

    case 'javascript': //action for javascript here
                        break;

    case 'jquery': //action for jquery here
                    break;
}

?>

Réf: W3Schools

8
Shailesh Sonare