More than one submit button

2019-05-08 18:32发布

I'm having trouble with more then one submit Buttons in HTML & PHP, i tried to code a GUI for a web-based calculator. That's realy easy, but the function in php isn't so easy. So i have this simple GUI with 6 submit buttons:

<?php 
$output= isset($_POST['output']) ? $_POST['output'] : "";

function calc(){
//calculate...
}

?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>Calc</title>
<style type="text/css">
 .bwidth {
      width: 100%;
}
</style>
</head>
<body>
    <form action="calc.php">
        <h1>
            <u>MY Own Calculator</u>
        </h1>
        <table border="3px" type="box" cellspacing="5px" width="250px">
            <tr style="height: 24px;">
                <td colspan="3"><input type="text" name="<?php $ausgabe ?>"
                    value="0" style="width: 98%;" /></td>
            </tr>
            <tr>
                <td><input class="bwidth" type="submit" name="1" value="1" /></td>
                <td><input class="bwidth" type="submit" name="2" value="2" /></td>
                <td><input class="bwidth" type="submit" name="3" value="3" /></td>

            </tr>
            <tr>
                <td><input class="bwidth" type="submit" name="minus" value="-" /></td>
                <td><input class="bwidth" type="submit" name="plus" value="+" /></td>
                <td><input class="bwidth" type="submit" name="enter"
                    value="=" /></td>
            </tr>
        </table>
    </form>
</body>

Now how I can differentiate these many submit buttons? It's even possible to have more than one submit button? I tried it to seperate the buttons by the value... but it didn't work.

And sb has an idea how i can add a value to an existing value in the textfield? So i can push button 1 and it will write 1 in the textfield and when i will push button 2 it will add the number 2 so it will a "12"?

Thanks for all suggestions!

7条回答
霸刀☆藐视天下
2楼-- · 2019-05-08 18:43

Yes, you can have n number of submit buttons in a form.

Specify the action page in the same line as with the submit button.

<form action="actionpage.php">
<input type="submit" value="1">
<input type="submit" value="2" formaction="postPage.php">
</form>

UPDATED - IF ISSUES IN IE

<form>
<input type="submit" value="1" onclick="document.formName.action='abc.php';">
<input type="submit" value="2" onclick="document.formName.action='xyz.php';">
</form>
查看更多
Rolldiameter
3楼-- · 2019-05-08 18:47

You can try to verify which button is set using isset($_GET['input_name']).

Or you could name different the inputs:

<form action="calc.php">
    <h1>
        <u>MY Own Calculator</u>
    </h1>
    <table border="3px" type="box" cellspacing="5px" width="250px">
        <tr style="height: 24px;">
            <td colspan="3"><input type="text" name="<?php $ausgabe ?>"
                value="0" style="width: 98%;" /></td>
        </tr>
        <tr>
            <td><input class="bwidth" type="submit" name="digit" value="1" /></td>
            <td><input class="bwidth" type="submit" name="digit" value="2" /></td>
            <td><input class="bwidth" type="submit" name="digit" value="3" /></td>

        </tr>
        <tr>
            <td><input class="bwidth" type="submit" name="operation" value="-" /></td>
            <td><input class="bwidth" type="submit" name="operation" value="+" /></td>
            <td><input class="bwidth" type="submit" name="operation" value="=" /></td>
        </tr>
    </table>
</form>

And in your function:

function calc(){
    $op = isset($_GET['operation']) ? $_GET['operation'] : null;
    switch ($op) {
       case "+": .... ; break;
       case "-": .... ; break;
       case "=": .... ; break;
       default: "not supported";
    }

}
查看更多
放荡不羁爱自由
4楼-- · 2019-05-08 18:49

You can use JavaScript to submit your form. After clicking button, you call JS function that set some hidden element with pushed operation and then submit form to server.

查看更多
叼着烟拽天下
5楼-- · 2019-05-08 18:53

You can do this using JavaScript, first you will have to change your <form> to something like:

<form id="form1" name="form1" method="post" action="calc.php">

Then the JavaScript and the buttons should look like this:

<script>
function submitForm(action)
{
    document.getElementById('form1').action = action;
    document.getElementById('form1').submit();
}
</script>

...

<input type="button" onclick="submitForm('page1.php')" value="submit 1" />
<input type="button" onclick="submitForm('page2.php')" value="submit 2" />
查看更多
贪生不怕死
6楼-- · 2019-05-08 18:55

In your php

if(isset($_POST['minus'])) {
  // selected minus
}

if(isset($_POST['plus'])) {
  // selected plus
}

if(isset($_POST['enter'])) {
  // selected enter
}

When you click on a button its going to be send with your post data to the server. All the post data you find in the $_POST array.

If you want to look whats in the $_POST array you can run this small code:

<?php
   echo '<pre>' . print_r($_POST, true) . '</pre>';
?>
查看更多
霸刀☆藐视天下
7楼-- · 2019-05-08 19:04

when you submit the form to calc.php

Inside calc.php check which form element received.

if(isset($_REQUEST['minus']))
{
    // minus is clicked
}
else if(isset($_REQUEST['plus']))
{
    // plus is clicked
}
else if(isset($_REQUEST['enter']))
{
    // enter is clicked
}

The clicked button will be sent with the form, not the others...

Hope it helps...

查看更多
登录 后发表回答