0

基本上,我有一个动态创建提交按钮的网站。前任:

input type="submit" name="test1"

input type="submit" name="test2"

等等....

我如何找出按下了哪个按钮(test1、test2、test3 等)?

我知道您可以使用隐藏值创建多个表单,但我宁愿只有一个带有多个提交的巨型表单。

编辑:按钮是动态创建的,所以我不知道会有多少。它可能是 test1-test55,所以我需要创建一些自动查看所有可能性的东西。

4

5 回答 5

1

您可以使用 if 或 switch 语句来测试发送了哪个提交,如下所示:

if(isset($_POST['test1'])){
    //form test1 submitted
}
else{
   if(isset($_POST['test2'])){
    //form test2 submitted
   }
}

您可以像这样签入所有 $_POST 密钥

foreach($_POST as $key => $value){
   if(substr($key,0,4) == 'test'){
      $form_submitted = substr($key,5); //retrieve number of submitted test
   }
}
于 2013-09-22T13:59:24.160 回答
1

如果您要提交这样的简单表格:

<form>
  <input type="text" id="icebear" value="tickle" />
  <input type="submit" id="doit" value="SUBMIT" />
</form>

接收页面会得到两个变量:

  • icebear(值为“tickle”)
  • doit(值为“提交”)

如果您不知道提交按钮的名称可能是什么,请记住这$_POST是一个数组。你可以在上面使用foreach。您可以通过这种方式过滤掉公共前缀上的提交按钮。

foreach( $_POST as $key => $value ) {
  echo "{$key} was submitted with value {$value}<br/>";
}
于 2013-09-22T14:03:29.253 回答
0
<form action ="" method="post">
    <input type="submit" name="test1" />
    <input type="submit" name="test2" />
    <input type="submit" name="test3" />

</form>

<?php
if(isset($_POST['test1'])){
    echo 'first button is pressed';
}elseif(isset($_POST['test2'])){
    echo 'Second button is pressed';
}

elseif(isset($_POST['test3'])){
    echo 'Third button is pressed';
}

    ?>
于 2013-09-22T14:02:13.900 回答
0

$_POST数组存储在不同的变量中,反转数组,并用于key()获取第一个键(即提交按钮):

以下应该有效:

<?php

if(!empty($_POST)) {
    $array = $_POST;
    $array = array_reverse($array);
    $key = key($array); // get first key
    echo $key;
}

?>

<form action="" method="post">
    <input type="text" name="foo" />
    <input type="submit" name="submit1" />
    <input type="submit" name="submit2" />
    <input type="submit" name="submit3" />
</form>

例如,如果您提交一个值并单击任何提交按钮,它应该回name显被单击的提交按钮的属性。无论表单中有多少提交按钮,上述解决方案都将起作用。

于 2013-09-22T14:10:02.950 回答
0

如果您可以更改按钮生成代码,您有几个选择。

如果您的按钮是连续生成的(1,2,3,...),您可以使用此处记录的 PHP 的魔力(向下滚动到“如何从选择多个 HTML 标记中获取所有结果?”)

for ($i = 0; $i < MAX; $i++){
    echo '<input type="submit" name="test[]"'." more button code />";
}

如果您的按钮编号来自数组,您可以这样做:

for ($arr as $i){
    echo '<input type="submit" name="test['.$i.']"'." more button code />";
}

通过以上任何一种方式,您都可以访问数组中的表单元素。由于这些是按钮,并且只有其中一个可以负责,因此您可以使用这种巧妙的方法来获取发布的值。

$the_posted_button_value = reset($_POST['test']);
于 2013-09-22T14:44:16.417 回答