![](/img/trans.png)
[英]PHP Select an Item from a Combo box and set an input field with the value
[英]php mysql jquery Select One Item from a form list and set the value of “1” to a field the rest set to “0”
我一直在掙扎。
我有一個包含項目列表的表格。 我只想允許從此列表中選擇一個項目並將我的數據庫中的項目標記為特色。 我也嘗試過單選按鈕,但每個按鈕的輸入名稱都不同。
形式:
<td class="right"><input name="top_cat[<?php echo $cat['cat_id']; ?>][featured]" type="checkbox" class="featured" value="<?php echo $cat['featured'] ?>" />
</td>
Jquery 在表格上:
$(function() {
$(".featured").each(function(){
if($(this).val() == 1){
$(this).attr('checked',"checked");
}
});
$(".featured").click(function(){
$(".featured").removeAttr('checked');
$(".featured").val('0');
$(this).val('1');
$(this).attr('checked',"checked");
});
在我的 mysql 更新中:
foreach ($data['top_cat'] as $cat_id => $value) {
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='" . $this->db->escape($value['featured']) . "' WHERE cat_id = '" . (int)$cat_id . "'");
}
這在一定程度上起作用,它將“1”的值添加到該項目的數據庫中,但將先前檢查的項目保留為“1”,它需要為“0”。
我相信我已經把這個復雜化了,任何朝着正確方向的幫助或輕推將不勝感激。
我認為因為它只更新當前選定的項目,
所以您需要運行更新查詢,將所有前一項更新為 0。
嘗試這個:
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='1' WHERE cat_id = '" . (int)$cat_id . "'");
foreach ($data['top_cat'] as $cat_id => $value) {
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='0' WHERE cat_id = '" . (int)$cat_id . "'");
}
POST 將僅包含選中的復選框,因此您的 foreach 循環可能只是循環一次。
使用一個名稱為top_cat
的單選按鈕,該值將包含$cat['cat_id']
。 現在,一旦您提交閱讀選定的單選按鈕,例如$_POST['top_cat']
或$data['top_cat']
使用單選按鈕,如:
<input name="top_cat" type="radio" class="featured" value="<?php echo $cat['cat_id'] ?>" />
並刪除循環並使用 php ,如:
$selected = (int)$data['top_cat'];
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='1' WHERE cat_id = $selected ");
// set all others to non-featured
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='0' WHERE cat_id != $selected ");
我不確定您的數據庫是如何設置的,但我認為這應該可以解決問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.