2016-12-22 48 views
0

所以,我運行此代碼插入從Array值複選框上的更改在PHP

<td><input type="checkbox" name="bill[]" <?php if ($row['BillBack'] === '1') echo "checked"; ?>></td> 

它創建了一個複選框每次

while ($row1 = $result1->fetch_assoc()) {} 

運行。所以,現在它有25個條目。 我想要提交按鈕點擊,如果複選框被選中將1扔入數據庫,如果不是,則拋出0.現在,似乎檢查是否檢查複選框數組的方法是使用

foreach($_POST['bill'] as $selected){ 
echo $selected."</br>"; 
} 

其中,將爲所選的每一個返回「開」。但是,我的SQL必須看起來像

"UPDATE Requests SET BillBack = '$bill' WHERE RequestID = $row['RequestID']" 

所以我認爲我需要把foreach循環內的while循環。但是,返回576「上的」
拋出

(!isset($_POST['bill'])) 

進入while循環不起作用,因爲它似乎如果其中任何被設置爲被觸發,即使去掉!只返回24「的」(只有一個沒有被切換)。所以有辦法,雖然我仍然有$ row ['RequestID']能夠檢查每個複選框是否設置,然後將它扔到我的表中,而它仍然與$行關聯?

+0

不可能奏效 – DCR

回答

0

添加$ row [「requestID」]作爲複選框的值。然後你的賬單[]將包含你需要的requestID。

對於複選框,value屬性的內容不會出現在用戶界面中。值屬性只在提交表單時有意義。如果在提交表單時複選框處於選中狀態,則複選框的名稱將與值屬性的值一起發送(如果複選框未選中,則不會發送信息)。

IOW,所有這些未經檢查的複選框都不發送任何內容,因此如果只檢查了兩個複選框,則陣列中只有兩個項目。沒有價值,確定哪兩個是不可能的。

foreach ($bill as $id) { 
    UPDATE Requests SET BillBack = '1' WHERE RequestID = $id; 
} 

而且可以優化使用SQL「中的」但我在工作中沒有時間