我正在建立一个从问题中得到很多答案的系统。因此,用户可以单击按钮来动态添加答案。我希望用户能够勾选正确答案旁边的复选框,然后将其插入数据库(1正确)。
这就是我所拥有的:
HTML:
<div id="answers">
<label class="answer">
Answer:
<input type="text" name="ab_name[]" value=""/>
Correct?
<input type="checkbox" name="ab_correct[]" value="0">
</label>
</div>
PHP
$ab_name = $_POST['ab_name'];
$ab_correct = $_POST['ab_correct'];
$sql = "INSERT INTO answers_bank (`ab_name`, `ab_correct` ) VALUES (:ab_name, :ab_correct )";
$stmt = $db->prepare($sql);
foreach ($_POST['ab_name'] as $ab_name) {
$stmt->bindValue(':ab_name', $ab_name);
$stmt->bindValue(':ab_correct', $ab_correct);
$stmt->execute();
}
像这样:
SQL插入ab_name
,但如果勾选或未勾选,则ab_correct
始终设置为1
。对此有任何指导吗?
答案 0 :(得分:1)
您可以使用for
循环代替foreach
。好吧,首先,你需要确保两个数组都有相同数量的元素。
if(count($_POST['ab_name']) != count($_POST['ab_correct']))
exit('Not same amount of elements.');
然后,遍历每一个。
for($i=0; $i<count($_POST['ab_name']); $i++){
$stmt->bindValue(':ab_name', $_POST['ab_name'][$i]);
$stmt->bindValue(':ab_correct', $_POST['ab_correct'][$i]);
$stmt->execute();
}
答案 1 :(得分:0)
if(isset($_POST['$ab_correct'])){$update = 1;}else{$update = 0;}
foreach ($_POST['ab_name'] as $ab_name) {
$stmt->bindValue(':ab_name', $ab_name);
$stmt->bindValue(':ab_correct', $update);
$stmt->execute();
}