Я пытаюсь передать несколько флажков на страницу $ _POST и сохранить данные в базе данных

#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. Если это устраняет проблему для вас, пожалуйста, примите ответ, чтобы другие знали, что она решена.