2013-12-08 42 views
0

我有一个在while循环中的复选框列表。该代码是:更新字段基于从表格中选择阵列

$result = mysqli_query($con,"SELECT a.*,b.* FROM b_report_week a INNER JOIN b_report_expenses b ON a.ID = b.ID WHERE a.TASK_ID=$taskid"); 
     while($row = mysqli_fetch_array($result)) 
     { 
     $invoiceID = $row['ID']; 
     $invoiced = $row['INVOICED']; 
     $mondayBill = number_format($row['MON_BILL'],2); 
     } 
     if ($invoiced == 0){  
     print "<input type='checkbox' name='rep[]' value='$invoiceID'>Reference Number: $invoiceID<br />"; 
     } 
     elseif ($invoiced == 1){ 
     print "<em>Reference Number: $invoiceID has already been invoiced</em><br />"; 
     } 

这仅仅是一个代码片段,但我想要做的是,在处理页面上,我想基于0到1的数据库(开具发票场)更新场勾选复选框。我曾尝试:

foreach ($_POST['rep'] as $index => $id) { 
$sql4="UPDATE b_report_week SET INVOICED = 1 "; 

if (!mysqli_query($con,$sql4)) 
{ 
die('Error: ' . mysqli_error($con)); 
} 
} 

然而,这将更新所有那些展出的复选框,因为它会做什么,我知道我需要在WHERE子句中有,但不知道如何能做到这一点每个被选中复选框。

任何帮助,将不胜感激。

回答

0

UPDATE语句中缺少WHERE子句,这就是为什么所有记录都正在更新。试试这个:

UPDATE b_report_week SET INVOICED = 1 WHERE `ID` = $id 

然而,更好的办法是要执行的,而不是在这样的循环中调用UPDATE语句只有一个UPDATE语句:

UPDATE b_report_week SET INVOICED = 1 WHERE `ID` IN (2,5,8) 

这里2,5,8的ID选定的复选框

相关问题