当元素名称未知时,从$_POST数组中获取输入元素名称


Getting input element name out of $_POST array when element name is unknown

我有一个PHP文件,其中包括另一个文件,该文件用于通过MySQL查询的结果循环创建表,然后返回所有HTML和PHP变量作为字符串。该字符串在div标签中显示。

创建表的PHP函数还根据它所在的行/列的名称创建具有唯一名称和id的输入元素。这意味着每个控件都是唯一的,我不知道哪个将用于提交数据。这样我就可以通过JavaScript使用内联编辑。这样,用户只需单击页面上表格中的元素,就会显示隐藏的输入控件。

点击提交表单帖子。要知道数据在数据库中的位置以及如何为更新生成SQL字符串,我需要获取发布的文本框的名称。post数组将只包含两个元素:提交按钮和文本框。如何解析这个名称?

目前我正在检查提交按钮是否已经设置了以下代码:

if(isset($_POST['submit'])) 
{
  //do stuff here
  $sql= update TABLENAME set ...
  $results = $dbConnect->prepare($sql);
}

等。

示例$_POST数组内容如下:

Array ( [submit] => submit [newText_primaryKey_columnName] => User Input Text )

如果你知道数组中有两个键,而你只想要未提交的键,那么就从数组中删除submit,剩下的就是你的键:

$post = $_POST;
unset($post['submit']);
$keys = array_keys($post);
$key = $keys[0];

完整示例:

<?php
//$post = $_POST;
$post = array('submit' => True, 'some key I made up' => 'foobar');
unset($post['submit']);
$keys = array_keys($post);
$key = $keys[0];
print $key;
// some key I made up

如果你开始你的所有单元格Id的标准名称,如Cell,它很容易拔出。

//Assuming CellID's Like cell_1, cell_2, cell_3 etc
foreach ($_POST as $Key => $Value)  //Check all posted values
{
    if (strpos('cell',$Key) !== false ) //if cell is at the begining of the key name
    {
        $OurKey = $Key; 
            //This will put cell into $temp and our id will be put in $CellID
        list($temp,$CellID) = implode('_', $OurKey);
        break;
    }
}
//Do Something With Our ID
SubmitData($CellID, $Value);

我希望这是你所追求的。

一个相关的注意事项,您可能会发现javascript库(如YUI或jquery)在减少所需的嵌入式表单数量方面很有用。

如果您的$_POST数组看起来像这样:

Array ( [submit] => submit [newText_primaryKey_columnName] => User Input Text )

然后你可以找到不是提交输入的键:

$my_key = '';
if (!empty($_POST)) {
    foreach ($_POST as $key => $val) {
        if ($key != 'submit') {
            $my_key = $key;
        }
    }
}
//you can now access the value of your text input using $_POST[$my_key]
//you can also determine what to do with your information
$tmp = explode("_", $my_key);//$tmp[0] = "newText"; $tmp[1] = "primaryKey"; $tmp[2] = "columnName";