4

我在使用 HTML 和 PHP 中的多个提交按钮时遇到问题,我尝试为基于 Web 的计算器编写 GUI 代码。这真的很容易,但是php中的函数并不那么容易。所以我有这个带有 6 个提交按钮的简单 GUI:

<?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>

现在我如何区分这些提交按钮?甚至可以有多个提交按钮?我尝试将按钮按值分开......但它没有用。

并且 sb 知道如何将值添加到文本字段中的现有值?所以我可以按下按钮1,它会在文本字段中写1,当我按下按钮2时,它会添加数字2,所以它会是“12”?

感谢所有建议!

4

7 回答 7

4

在你的 php

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

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

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

当您单击一个按钮时,它将与您的帖子数据一起发送到服务器。您在 $_POST 数组中找到的所有发布数据。

如果您想查看 $_POST 数组中的内容,可以运行以下小代码:

<?php
   echo '<pre>' . print_r($_POST, true) . '</pre>';
?>
于 2013-04-23T07:07:28.720 回答
3

您可以使用 JavaScript 执行此操作,首先您必须将您的更改<form>为:

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

然后 JavaScript 和按钮应该如下所示:

<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" />
于 2013-04-23T07:09:55.427 回答
3

您可以尝试使用 验证设置了哪个按钮isset($_GET['input_name'])

或者您可以命名不同的输入:

<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>

在你的功能中:

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

}
于 2013-04-23T07:11:17.790 回答
3

也许您可以为所有提交按钮使用一个名称。

<input type="submit" name="operator" value="+" />
<input type="submit" name="operator" value="-" />
<input type="submit" name="operator" value="=" />

你可以在php中获取值

<?php
    $opr = $_GET['operator'];
    if($opr == "+") {
         //do something
    } else if($opr == "-") {
         //do something
    } else if($opr == "=") {
         //do something
    }
?>
于 2013-04-23T07:15:42.333 回答
2

当您将表格提交给calc.php

内部calc.php检查收到了哪个表单元素。

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

单击的按钮将与表单一起发送,而不是其他...

希望能帮助到你...

于 2013-04-23T07:06:16.863 回答
2

是的,一个表单中可以有 n 个提交按钮。

在与提交按钮相同的行中指定操作页面。

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

更新 - 如果在 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>
于 2013-04-23T07:11:31.853 回答
0

您可以使用 JavaScript 提交表单。单击按钮后,您调用 JS 函数,该函数通过推送操作设置一些隐藏元素,然后将表单提交到服务器。

于 2013-04-23T07:07:03.033 回答