#php #arrays #post
#php #массивы #Публикация
Вопрос:
У меня есть несколько записей с флажками, которые необходимо передать на страницу $ _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);
}
Снова я получаю запись последнего флажка, но ни один из других данных флажка не записывается.
Ответ №1:
Вы написали:
foreach ($_POST['checkbox'] as $value);{
Точка с запятой там означает, что вы foreach
немедленно завершаете блок. И затем {
запускается блок кода, полностью отдельный от foreach
, с $value
установленным в качестве последнего значения из списка флажков.
Просто удалите ;
, и все должно быть хорошо.
Комментарии:
1. Если это устраняет проблему для вас, пожалуйста, примите ответ, чтобы другие знали, что она решена.