php - 我正在尝试将多个复选框传递给 $_POST 页面并将数据保存到数据库
问题描述
我有多个复选框条目需要传递到 $_POST 页面,将每个复选框中的多个选择分开,并将这些答案传递给数据库。
我已经能够从复选框中获取数据并分离出数据,放置,但只有最后一个选中的复选框被记录在数据库中。
这是保存复选框数据的代码,它将在数据库中生成尽可能多的数据,并允许用户选择全部或部分内容:
echo "<table class='p'>";
echo "<tr>";
echo "<td class='z'>Story Name</td>";
echo "<td class='z'>Email</td>";
echo "</tr>";
while($row = mysqli_fetch_assoc($result)) {
$st_name = $row['st_name'];
$email = $row['email']
echo "<tr>";
echo "<td class='b'>".$st_name."</td>";
echo "<td><input type='checkbox' name='checkbox[]' class='checkboxes' value='$row[st_id],$row[g_id]' >" .$email."</td>";
echo "</tr>";
};
echo "<br>";
echo "</table>";
这是 $_POST 数据:
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST['checkbox'])){
foreach ($_POST['checkbox'] as $value);{
$breakout = $value;
list($st_id, $g_id) = explode(',', $breakout);
//echo "story".trim($st_id) ."-"."guest". trim($g_id). "<br>";
$sql = "INSERT INTO gs (id, st_id, userid) VALUES (?, ?, ?)";
if($stmt = mysqli_prepare($db, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "sss", $param_id, $param_st_id, $param_g_id);
$param_id = $id;
$param_st_id = $st_id;
$param_g_id = $g_id;
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
// Redirect to start page
header("location: sharestory.php");
} else{
echo "Something went wrong. Please try again later.";
}
}
}
}
// Close statement
mysqli_stmt_close($stmt);
// Close statement
//mysqli_stmt_close($stmt);
mysqli_close($db);
}
我再次记录了最后一个复选框,但没有记录其他复选框数据。
解决方案
你写:
foreach ($_POST['checkbox'] as $value);{
那里的分号表示您正在foreach
立即终止该块。然后{
开始一段代码,与 完全分开foreach
,$value
设置为复选框列表中的最后一个值。
只需删除;
,你应该会很好。
推荐阅读
- scala - Intellij:如果未提供命名变量,则数据集上的火花过滤器被标记为错误
- apache-spark - Apache Spark 中的 Printschema()
- matlab - Matlab/Octave - 多行函数 - 绘图
- html - 带有危险滑动器的视差滚动效果
- r - 多个变量(列),多年(列)重塑为 R 中的平面文件
- php - php 进程永不消亡,基于 ZMQContext 的 $socket->send() 之后如何解决?
- jquery - 访问烧瓶中的jQuery滑块值
- java - 如何将第三方 jar 添加到 mapreduce 作业?
- react-native - 如何使用带有 redux 表单的反应原生元素单选按钮?
- python - 在源 env/bin/activate 的 yocto 嵌入系统中:无法执行 arm-poky-linux-gnueabi-gcc