从表格输入的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]); 
    } 
} 
+0

谢谢......虽然这几乎等同于我有什么..有没有一种方法,我可以做类似于$ _POST ['id'] ['米']其中id1 => meter_reading为每个ID ..? – AcidHawk 2014-08-27 08:50:32

+0

是的,这是真的,但truley你正在做的是一个最佳的解决方案w.r.t拆分时间 – 2014-08-27 08:52:24

一个更好的方法是确保你的输入名字是“石头”的;

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:这是概念证明......还没有测试尚未...