我有一个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";