从表格输入的PHP数组
问题描述:
我有一个数据在一个已经从mysql数据库填充的html表中。为了把数据放到HTML表我也做了以下内容:从表格输入的PHP数组
$meterdetail = getMeterDetails($ticketNumber);
这会从MySQL表的一些记录,然后从数据库我下面的检索每个记录..
foreach ($meterdetail as $v2) {
<tr>
<td class='tableText'>
<input type='hidden' name='ids[]' value='".$v2['id']."'>
<input type='text' name='meters[]' value=''>
</td>
</tr>
最终我在这里要做的是更新每个记录(基于来自mysql表的ID)与输入表中的值。
当我点击一个提交按钮时,我需要遍历每个收集到的记录,并将键入的值插入到相应的id对应的html表单中。
要处理$ _ POST数据我下面
if (!empty($_POST['meters']) && !empty($_POST['ids'])) {
for ($i = 0; $i < count($_POST['meters']); $i++) {
updateRecord($_POST['ids'][$i],$_POST['meters'][$i]);
}
}
这似乎是工作,但由于某种原因,所以我的问题是我不觉得舒服该解决方案:有没有更好的(更优雅/更正确)的方式来做到这一点(特别是处理2 $ _POST阵列)?我可以使用ID作为关键字和表单输入值作为相应的值创建一个关联数组吗?
答
$met = $_POST['meters'];
$id = $_POST['ids'];
if (isset($met) && isset($id))
{
for ($i = 0; $i < count($id); $i++)
{
updateRecord($id[$i],$met[$i]);
}
}
答
一个更好的方法是确保你的输入名字是“石头”的;
foreach ($meterdetail as $key => $v2) {
echo "
<tr>
<td class='tableText'>
<input type='hidden' name='id_".$key."' value='".$v2['id']."'>
<input type='text' name='meter_".$key."' value=''>
</td>
</tr>
";
}
而不是过程后的数据作为这样的:
$ids = array();
$meters = array();
foreach($_POST as $name => $value) {
if(strpos($name, 'id_') === 0) {
$ids[substr($name, 3)] = $value;
}
if(strpos($name, 'meter_') === 0) {
$ids[substr($name, 3)] = $value;
}
}
if(count($ids) && count($meters)) {
foreach($ids as $key => $id) {
updateRecord($id, $meters[$key]);
}
}
这样,你总是确保你有你在DB更新伴随值。
PS:这是概念证明......还没有测试尚未...
谢谢......虽然这几乎等同于我有什么..有没有一种方法,我可以做类似于$ _POST ['id'] ['米']其中id1 => meter_reading为每个ID ..? – AcidHawk 2014-08-27 08:50:32
是的,这是真的,但truley你正在做的是一个最佳的解决方案w.r.t拆分时间 – 2014-08-27 08:52:24