我有一個從mysql表中拉出的項目的簡單列表的頁面。每個項目都屬於兩個類別之一。在數據庫中我有「狀態」列。項目處於狀態1或狀態0.每組有一個。組合數組在foreach循環與if語句和查詢部分失敗
在頁面上的每個項目上,我添加了一個複選框,其中包含表中行的主鍵。在頁面上給定類別中的每個項目內。我還有一個隱藏字段,它的$ _POST ['Status']被設置爲與它當前所在的組相對應。使用下面的代碼,我將Status數組和check_list(這是主鍵)正確地合併到鍵和值中對。
我希望人們能夠檢查兩個組中的複選框,並通過單擊一次按鈕實現狀態更改,實質上將項目從一個組移動到另一個組。我有兩件事在兩組之間反彈。
組1中的一切正常。我可以一次移動一個項目,直到它一次只剩下兩個項目,並且所有三個項目都沒有問題。組0不起作用。我可以一次移動三件物品,沒有問題,我可以同時移動兩件物品,但一次只能移動一件物品。第二次,沒有任何進展。如果我選擇該組中的其餘項目,則只有第一個項目會移動。
這是非常奇怪的行爲。我認爲這與if語句在foreach循環中執行的方式有關,但我不知道如何解決它。
function combine_arr($a, $b) {
$acount = count($a);
$bcount = count($b);
$size = ($acount > $bcount) ? $bcount : $acount;
$a = array_slice($a, 0, $size);
$b = array_slice($b, 0, $size);
return array_combine($a, $b);
}
if(isset($_POST['Move'])) {
if(!empty($_POST['check_list'])) {
$combined = combine_arr($_POST['check_list'], $_POST['Status']);
foreach ($combined as $key => $value) {
if($value == 1) {
mysqli_query($con, "UPDATE items SET Status=0 WHERE ID=$key");
}
if($value == 0) {
mysqli_query($con, "UPDATE items SET Status=1 WHERE ID=$key");
}
}
}
}
這裏開始發起行動的按鈕,頁面上的相關HTML ...
<form action="index.php" method="post" id="itemCheck">
<button form="itemCheck" class="button_Blue" type="submit" name="Move" value="Move">Move<span>selected</span></button>
</form>
...然後在第一組中的一個複選框...
<input type="hidden" form="itemCheck" name='Status[]' value='1'>
<input type="checkbox" form="itemCheck"name="check_list[]" value="<?php echo $row['ID']; ?>">
......最後是第二組中的複選框,除了隱藏字段的值之外,它們是相同的。
<input type="hidden" form="itemCheck" name='Status[]' value='0'>
<input type="checkbox" form="itemCheck"name="check_list[]" value="<?php echo $row['ID']; ?>">
如果複選框是互斥的,爲什麼不你用單選按鈕呢? – Barmar
我無法理解您的描述。請將HTML添加到問題中。 – Barmar