如何获取/提取提交按钮的名称值?

时间:2013-06-12 00:08:26

标签: php form-submit

当我创建表单时 - 我会这样做:

<form name="form-name" method="post" action="?<?=$_SERVER['QUERY_STRING']?>">
    [...some elements...]
    <input type="submit" name="form-name" value="button">
</form>

现在我需要获取提交按钮的name=""的值,而不是实际的value=""。 在这种情况下:“form-name”。

这就是原因:
当我提交表格时;我将操作写入数据库 - 因此需要提交表单的名称。

我知道我可以使用表单名称隐藏字段。但是我想通过从提交按钮中提取名称来简化它,因为我需要在我创建的每个表单上添加一些其他隐藏的表单元素,以使我的模板系统工作。

没有javascript ...

2 个答案:

答案 0 :(得分:1)

所以,假设您的HTML表单是这样的:

<form name="form-name" method="post" action="">
    <input type="submit" name="form-name" value="button">
</form>

你希望得到name="form-name"内的form-name

内的内容

那么,在PHP方面,您可以将$_POST全局视为关联数组,并从中提取密钥,如下所示:

<?php

  if(isset($_POST)){

  foreach($_POST as $key=>$each){
    echo $key; // this will output "form-name"
  } 
}

答案 1 :(得分:0)

我可能想出一个解决我问题的方法......

以下是一个示例表单:

<form name="vehicle-vinNr" method="post" action="?<?=$_SERVER['QUERY_STRING']?>">
    <input type="hidden" name="hello" value="world" readonly>
    <input type="text" name="element">
    <input type="submit" name="vehicle-vinNr" value="send">
</form>

首先,我需要提取元素名称并将其放入新数组中:

<?php
if ($_POST){
    foreach($_POST as $_FORM_ELEMENT_name => $_FORM_ELEMENT_value){
        $_FORM_ELEMENT_names[] = $_FORM_ELEMENT_name;
    }
}
?>

在这种情况下,数组现在包含:

hello
element
vehicle-vinNr

如果提交按钮是,并且始终是表单中的最后一个元素 - 这将起作用:

$_FORM_name = end($_FORM_ELEMENT_names);  //  vehicle-vinNr

但有时提交按钮不是最后一个元素,所以我需要做出改变:

如果我始终使用submit_启动提交按钮的名称 - 例如submit__vehicle-vinNr或多个提交按钮,用于submit_update__vehicle-vinNr / submit_delete_vehicle-vinNr之类的不同操作我可以这样做:

if ($_POST){
    foreach($_POST as $_FORM_ELEMENT_name => $_FORM_ELEMENT_value){     
        if(strstr($_FORM_ELEMENT_name,'submit_')){
            $_FORM_ELEMENT_submit_name = explode('__',$_FORM_ELEMENT_name);
            $_FORM_name = $_FORM_ELEMENT_submit_name[1];  //  vehicle-vinNr
        }
    }
}

这是我提出的解决方案 - 任何想法?