2014-08-27 43 views
0

我有一個數據在一個已經從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作爲關鍵字和表單輸入值作爲相應的值創建一個關聯數組嗎?

回答

0
$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

0

一個更好的方法是確保你的輸入名字是「石頭」的;

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:這是概念證明......還沒有測試尚未...