0

当我创建 i form - 我做这样的事情:

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

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

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

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

而且没有javascript...

4

2 回答 2

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"
  } 
}
于 2013-06-12T00:11:59.923 回答
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
        }
    }
}

这是我想出的解决方案 - 有什么想法吗?

于 2013-06-12T01:45:12.763 回答