这是我的代码,不知道我在这里做错了什么...首先我检查传递的变量并添加关于如何处理表单的位...
// Check for a user id:
if (empty($_POST['user_id'])) {
$errors[] = 'Oops! You forgot to enter your users.';
} else {
$user_id = mysqli_real_escape_string($dbc, trim($_POST['user_id']));
}
if (empty($errors)) { // If everything's good.
// Add the user to the database:
$q = "INSERT INTO users (user_id, page_id, account_id ) VALUES ('$user_id', '$page_id', '$id' )";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
//CLOSE UP THE SUBMIT CONDITIONAL
然后我选择用户并回显表单
echo '<form action="addusers.php" method="post">';
while ($row = mysqli_fetch_array($show, MYSQLI_ASSOC)) {
echo '<p><label for="learner">Add</label>
<input type="checkbox" id="user_id" value="' . $row['user_id'] . '" name="user_id" /></p>';
}
echo '<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
<input type="hidden" name="account_id" value="$id" />
<input type="hidden" name="course_id" value="$course_id" />
</form>';
这会创建一个我的用户列表,并允许我选择尽可能多的用户,但是当我点击提交时,它只会将最后一个用户输入数据库,而不是所有用户?
//更新 好的 - 我编辑了代码,以便复选框的值是一个数组,并知道我需要使用foreach循环将变量传递到数据库中,但有人可以检查此代码中的插入吗?
// Add the user to the database:
$q = "INSERT INTO users (user_id) VALUES ('$user_id')";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
foreach($_POST as $key => $value){
if ($r->execute(Array($key, $value))){
echo "user added <br />";
}
} // end for each loop
答案 0 :(得分:2)
使用:
<input type="checkbox" id="user_id" value="' . $row['user_id'] . '" name="user_id[]" />
(注意“name”属性中user_id之后的[]。
这会导致$ _POST ['user_id']成为一个值数组,每个复选框都有一个值。
答案 1 :(得分:0)
尝试此替换
<input type="checkbox" id="user_id" value="' . $row['user_id'] . '" name="user_id" /></p>';
通过
<input type="checkbox" id="user_id" value="' . $row['user_id'] . '" name="user_id[]" /></p>';
//尝试将user_id复选框设置为user_id[]