2013-02-07 194 views
2

的陣列我有被從表中填充的行的形式。每行都有一個「複選框」,用戶可以選擇是否複選。循環通過複選框

當提交表單我希望能夠讀取已選定該複選框,並在一個數據表中插入的結果。

到目前爲止我的代碼 FORM:

<form method="post" name="form1" action="<?php echo $editFormAction; ?>"> 
<table 
<?php do { ?> 
<tr> 
<td>input type="text" name="InspectRoomNo" value="<?php print $row_InspectItems['AuditItemNo']; ?>"></td> 
<td>php echo $row_InspectItems['AuditItem']; ?>td> 
<td>input name="check[]" type="checkbox" ></td> 
</tr> 
<?php } while ($row_InspectItems = mysql_fetch_assoc($InspectItems)); ?> 
<input type="submit" value="Insert record"> 
</table> 

插入:去抓取$項目從表

while($row = mysql_fetch_assoc($Items)) 
{ 
$array[] = $row['AuditItem']; 
} 


foreach($array as $id) { 
$AuditItemID = mysql_real_escape_string($id); 

if(isset($_POST['check'])){ 
$Checked = mysql_real_escape_string($_POST['check'][$row]); 
} 
} 

我遇到的問題是所有的複選框返回的值是真實的,甚至如果複選框沒有被選中。

誰能幫我解決這問題。

非常感謝。

回答

6

做這樣的:

if(!empty($_POST['check'])) { 
    foreach($_POST['check'] as $check) { 
     echo $check; 
    } 
} 
2

你應該把項目ID的複選框名稱中:

<td><input name="check[<?= $row_InspectItems['AuditItem']; ?>]" type="checkbox" /></td> 

然後,你可以簡單地迭代它:

foreach ($_POST['check'] as $id => $value) { 
    // do stuff with your database 
} 

我假設任何人比運行此腳本是可信的,因爲它很容易僞造ID列表;確保當前用戶有權更新這些記錄。

0

發生了什麼,是唯一入選的複選框被髮送到服務器,所以你會看到你的$_POST['check']陣列(這是一個數組!)比小您在屏幕上顯示的項目數量。

,讓你知道複選框選中得到了什麼,適應你的PHP處理代碼來處理數組,而不是一個單一的值應該添加您的ID。

您也覆蓋你的InspectRoomNo每一行,所以你應該使用數組那裏。

形式側面看起來是這樣的:

<td><input type="text" name="InspectRoomNo[<?php echo row_InspectItems['AuditItemNo']; ?>]" value="<?php print row_InspectItems['AuditItemNo']; ?>"></td> 
<td><?php echo $row_InspectItems['AuditItem']; ?></td> 
<td><input name="check[<?php echo row_InspectItems['AuditItemNo']; ?>]" type="checkbox" ></td>