2 回答

TA貢獻1815條經驗 獲得超6個贊
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" **id="defaultCheck1"**>
<label class="form-check-label" for="defaultCheck1">
Ham
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" **id="defaultCheck1"**>
<label class="form-check-label" for="defaultCheck1">
Turkey
</label>
</div>
首先,您要復制 ID。在任何情況下,這都不合適,因為元素 ID 必須是唯一的。
其次,表單僅提交具有名稱的字段元素的值。他們還需要值,您將其全部保留為“”。這段代碼中的“Ham”和“Turkey”只是文本字符串,不要隨表單一起提交。請參閱HTML 表單 - 是否需要名稱和 ID?
編輯 1:
PHP-除此之外,您的 PHP 還需要一些改進:
$tempCheck = filter_input(INPUT_POST, "defaultCheck1", FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
$defaultCheck1 = (is_array($tempCheck)) ? implode(',', $tempCheck1) : null;
這些值不在數組中。假設您有三個復選框,分別命名為“a”、“b”和“c”。如果選中“a”的復選框,我將在 $_POST['a'] 中獲取它的值。如果沒有選擇“b”,$_POST['b'] 將不存在。
因此,對于您要處理的每個復選框值,您需要 a) 檢查它是否存在于 $_POST 中,如果存在,b) 使用該值(即,將其添加到以逗號分隔的字符串中)。

TA貢獻1845條經驗 獲得超8個贊
這是因為您的復選框字段沒有名稱,但我想您只想允許選擇一個類別,在這種情況下,您必須在 HTML 標記中使用單選字段:
<div class="form-check">
<input class="form-check-input" type="radio" name="category" value="vegetarian" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Vegetarian
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="category" value="ham" id="defaultCheck2">
<label class="form-check-label" for="defaultCheck1">
Ham
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="category" value="turkey" id="defaultCheck3">
<label class="form-check-label" for="defaultCheck1">
Turkey
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="category" value="other" id="defaultCheck4">
<label class="form-check-label" for="defaultCheck1">
Other
</label>
</div>
我還注意到您在多個地方使用了相同的 id 屬性,id 用于指定元素的唯一性,它不會破壞功能,但請記住這一點。
更新
如果你想有多個表示相同事物的類別,你可以將它們命名為 categories[0]、categories[1]、categories[2] ...
<div class="form-check">
<input class="form-check-input" type="checkbox" name="categories[0]" value="vegetarian" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Vegetarian
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="ham" name="categories[1]" id="defaultCheck2">
<label class="form-check-label" for="defaultCheck2">
Ham
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="turkey" name="categories[2]" id="defaultCheck3">
<label class="form-check-label" for="defaultCheck3">
Turkey
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="other" name="categories[3]" id="defaultCheck4">
<label class="form-check-label" for="defaultCheck4">
Other
</label>
</div>
然后在 PHP 中更新這個字段:
$tempCheck = filter_input(INPUT_POST, "categories", FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
$stmt->bindParam(':defaultCheck1', implode(',', $tempCheck));
- 2 回答
- 0 關注
- 138 瀏覽
添加回答
舉報