发布表单时发送提交按钮的值

M.G*_*rot 35 html php forms post button

我有一个名称列表和一些带有产品名称的按钮.单击其中一个按钮时,列表的信息将发送到PHP脚本,但我无法点击提交按钮来发送其值.怎么做?我将我的代码简化为以下内容:

发送页面:

<html>
<form action="buy.php" method="post">
    <select name="name">
        <option>John</option>
        <option>Henry</option>
    <select>
    <input id='submit' type='submit' name = 'Tea'    value = 'Tea'>
    <input id='submit' type='submit' name = 'Coffee' value = 'Coffee'>
</form>
</html>
Run Code Online (Sandbox Code Playgroud)

接收页面:buy.php

<?php
    $name = $_POST['name'];
    $purchase = $_POST['submit'];
    //here some database magic happens
?>
Run Code Online (Sandbox Code Playgroud)

除了发送提交按钮值之外的所有内容都可以正常运行.

rob*_*bmj 47

按钮名称未提交,因此$_POST['submit']未设置php 值.如isset($_POST['submit'])评估为假.

<html>
<form action="" method="post">
    <input type="hidden" name="action" value="submit" />
    <select name="name">
        <option>John</option>
        <option>Henry</option>
    <select>
<!-- 
make sure all html elements that have an ID are unique and name the buttons submit 
-->
    <input id="tea-submit" type="submit" name="submit" value="Tea">
    <input id="coffee-submit" type="submit" name="submit" value="Coffee">
</form>
</html>

<?php
if (isset($_POST['action'])) {
    echo '<br />The ' . $_POST['submit'] . ' submit button was pressed<br />';
}
?>
Run Code Online (Sandbox Code Playgroud)


use*_*035 14

请改用:

<input id='tea-submit' type='submit' name = 'submit'    value = 'Tea'>
<input id='coffee-submit' type='submit' name = 'submit' value = 'Coffee'>
Run Code Online (Sandbox Code Playgroud)


phn*_*phn 9

最初的帖子提到了按钮。您还可以用按钮替换输入标签。

<button type="submit" name="product" value="Tea">Tea</button>
<button type="submit" name="product" value="Coffee">Coffee</button>
Run Code Online (Sandbox Code Playgroud)

namevalue属性须提交时提交表单(该值id属性是没有必要在这种情况下)。该属性type=submit指定单击此按钮会导致提交表单。

当服务器处理提交的表单时,$_POST['product']将根据单击的按钮包含值“茶”或“咖啡”。

如果您愿意,您还可以要求用户在提交表单之前进行确认(例如,在您实施删除按钮时很有用)。

<button type="submit" name="product" value="Tea" onclick="return confirm('Are you sure you want tea?');">Tea</button>
<button type="submit" name="product" value="Coffee" onclick="return confirm('Are you sure you want coffee?');">Coffee</button>
Run Code Online (Sandbox Code Playgroud)


dev*_*ion 6

首先,使用相同的ID两次并不是一个好主意.ID应该是唯一的,如果您需要设置样式元素,则应该使用类来应用CSS.

最后,您将提交按钮的名称定义为Tea and Coffee,但在PHP中,您使用submit作为索引.你的索引应该是$ _POST ['Tea'].这将要求您检查它是否设置,因为它只发送一个,您可以使用isset().

无论如何买,user4035只是打败了我,他的代码将"修复"这个给你.

  • 如果OP通过W3C验证程序运行其页面,它将告诉他重复的ID无效。 (2认同)
  • OP的另一个提示:如果你试图在php中调试表单post/get数据,你可以在表单调用的页面上执行以下操作:echo'<pre>'; 后续代码var_dump($ _ POST); echo'</ pre>'; 它将清楚地显示所有传递的数据. (2认同)

DrP*_*rJo 5

就像其他人说的那样,您可能会误解了唯一ID的想法。我要补充的是,我不喜欢在这里使用“值”作为标识属性的想法,因为它可能随着时间而改变(即,如果您想提供多种语言)。

<input id='submit_tea'    type='submit' name = 'submit_tea'    value = 'Tea' />
<input id='submit_coffee' type='submit' name = 'submit_coffee' value = 'Coffee' />
Run Code Online (Sandbox Code Playgroud)

并在您的PHP脚本中

if( array_key_exists( 'submit_tea', $_POST ) )
{
  // handle tea
}
if( array_key_exists( 'submit_coffee', $_POST ) )
{
  // handle coffee
}
Run Code Online (Sandbox Code Playgroud)

另外,您可以添加类似的内容,例如if( 'POST' == $_SERVER[ 'REQUEST_METHOD' ] )是否要检查数据是否正确发布。