2013-12-08 2 views
0

У меня есть список флажков, которые находятся в цикле while. Код:UPDATE Поле, основанное на выборе массива из формы

$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 />"; 
     } 

Это лишь фрагмент кода, но то, что я хочу сделать, это, на странице обработки Я хотел бы обновить поле в (INVOICED поля) баз данных от 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)); 
} 
} 

Это, однако, обновляет все флажки, которые находятся на дисплее, как это будет делать, я понимаю, что нужно ИНЕКЕ там, но не знаю, как я могу сделать это за флажок, который выбран.

Любая помощь будет оценена по достоинству.

ответ

0

Предложение WHERE отсутствует в инструкции UPDATE, поэтому все записи обновляются. Попробуйте это:

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 являются идентификаторами выбранных флажков

Смежные вопросы