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 关注
- 102 浏览
添加回答
举报