【问题标题】:PHP Form with multiple submit buttons带有多个提交按钮的 PHP 表单
【发布时间】:2015-03-04 15:47:09
【问题描述】:

我有一个带有两个按钮的表单。这是一个提交表单,基本上可以根据他们单击的按钮来增加/减少 MySQL 数据库中的整数值。

这是一个奇怪的场景,页面需要一个ID扩展;

appinfo.php?id=12

每当我单击其中一个按钮时,它会将扩展名更改为:

appinfo.php?VoteYes=Yes

理想情况下我会喜欢它,所以如果有人点击是,它会增加 SQL 查询中的值,如果他们点击否,它会减少它。

这是我目前所拥有的:

<form action="<?php echo $_SERVER['PHP_SELF'] . "?id=" . $_GET['id']; ?>"/>
    <input id="submit" name="VoteYes" type="submit" value="Yes" class="btn btn-success"></input>
    <input id="submit" name="VoteNo" type="submit" value="No" class="btn btn-warning"></input>
</form>

【问题讨论】:

  • 我看到了几个问题。您没有名为 id 的表单域。 (您也没有验证该字段。)您所看到的是您单击的按钮的名称被添加到查询字符串中。我推荐的方法是在按钮单击时对处理将数据插入数据库的逻辑的脚本进行 ajax 调用。然后在成功回调中,您可以更新表单操作或您需要做的任何事情。

标签: javascript php jquery mysql forms


【解决方案1】:

在您的&lt;form&gt; 中添加属性method="post"。默认为GET,它正在更改您的网址。

所以,应该是:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] . "?id=" . $_GET['id']; ?>"/>
    <input id="submit" name="VoteYes" type="submit" value="Yes" class="btn btn-success"></input>
    <input id="submit" name="VoteNo" type="submit" value="No" class="btn btn-warning"></input>
</form>

然后在您的 PHP 代码中,检查提交的值时检查 $_POST 而不是 $_GET

希望对你有帮助!

【讨论】:

  • 希望我没有错问这个问题。在您的解决方案中 'appinfo.php?id=' 如何更改为 'appinfo.php?VoteYes=' ?因为上面的代码添加了 id="passed argument" 它必须是 VoteYes="passed argument" 对吗?
  • @shridhar 当提交带有methodget 的表单时,浏览器会忽略action 属性中可能已经存在的任何参数,并且仅在URL 中包含表单数据.
【解决方案2】:

如果您真的想要查询字符串,您可以使用包含 id 的隐藏输入来执行此操作, 我还修改了名称以使其不那么复杂

<form>
<input id="submit" name="Vote" type="submit" value="Yes" class="btn btn-success" />
<input id="submit" name="Vote" type="submit" value="No" class="btn btn-warning" />
<input  name="id" type="hidden" value="<?php echo $_GET['id']?>" /></form>

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多