如何从动态$ _POST变量名中获取值?

时间:2013-09-22 13:57:10

标签: php

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

input type="submit" name="test1"

input type="submit" name="test2"

依旧......

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

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

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

5 个答案:

答案 0 :(得分: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
   }
}

答案 1 :(得分:1)

如果你要提交一个这样的简单表格:

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

接收页面将获得两个变量:

  • icebear(价值“痒”)
  • doit(值为“SUBMIT”)

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

foreach( $_POST as $key => $value ) {
  echo "{$key} was submitted with value {$value}<br/>";
}

答案 2 :(得分: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';
}

    ?>

答案 3 :(得分: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属性。无论表单中的提交按钮数量如何,上述解决方案都将起作用。

答案 4 :(得分:0)

如果您可以更改按钮生成代码,则可以选择一些选项。

如果您的按钮是连续生成的(1,2,3,...),您可以将PHP的神奇力量用作documented here (scroll down to "How do I get all the results from a select multiple HTML tag?")

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 />";
}

在上述任一方法中,您都可以访问数组中的表单元素。由于这些是按钮,并且只有其中一个可以负责,因此您可以使用this clever method来获取发布的值。

$the_posted_button_value = reset($_POST['test']);