Как получить значения флажков из цикла выборки запросов MySQL в PHP? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть скрипт PHP для сайта, который я создаю, и он взаимодействует с настроенной базой данных MySQL. Я хочу отобразить курсы в одной из моих таблиц базы данных в виде списка флажков.

После долгих проб и ошибок мне удалось это сделать. Он находится в цикле while ниже, используя mysqli_fetch_array().

Теперь я застрял на том, как на самом деле получить проверенные значения и сохранить только проверенные курсы в другую таблицу в моей базе данных (курсы приняты). Как видите, я выбираю из БД и выводю все строки флажков в одном цикле. Но мне нужно также проверить после того, как я выведу все из них, которые выбрал пользователь.

Я попытался сохранить все значения $ row в массив строк и получить к нему доступ дважды, но это не сработало вообще (куча ошибок). Я хочу знать, как лучше всего это сделать.

Вот мой код:

<form action='' method='POST'>
    <input type="submit" name="no_courses_button" value="No"><br>
</form>

<form action='' method='POST'>
    <input type="submit" name="yes_courses_button" value="Yes"><br><br>
</form>

<?php 
    if(isset($_POST['no_courses_button'])){ //if the user has no courses taken so far
        echo "Thank you. Please press NEXT below to proceed."."<br>"; #no need to insert in DB
    }

    if(isset($_POST['yes_courses_button'])){ //if the user has taken courses taken so far
        session_start();
        $netID = $_SESSION['curr_user'];

        echo "Please select the courses you have taken so far."."<br>"."<br>";

        include 'php_mysql_connect.php'; //retrieving all course from DB
        $result = mysqli_query($connect, "SELECT subject, course_number, course_title FROM course ORDER BY course_number");
        error_reporting(0);
        $num_courses = 83;

        while ($row = mysqli_fetch_array($result)) { //HERE's MY PROBLEM AREA
            echo 
            "<input type='checkbox' name='checkbox' value='$row[0] $row[1] $row[2]'>$row[0] $row[1] - $row[2]"."<br>"; 
            //creating checkboxes
        }
    }               
?>

<form action='' method='POST'>
    <br><br><input type="submit" name="submit_button" value="Save Courses"><br><br>
</form>

<?php
    if(isset($_POST['submit_button'])){ //submitting checked list
        echo "Your courses have been saved. Please press NEXT to proceed."."<br>"."<br>"; 
        //I WANT TO CHECK FOR CHECKED BOXES AND INSERT HERE INTO THE DB
    }
?>

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

У <form>, который у вас есть, есть только кнопка отправки.Вам необходимо также включить флажки в форму, если вы хотите проверить их.Вам нужно дать каждому из них свойство имени, на которое вы можете ссылаться при получении их значения (проверено или не проверено).Например:

<input type='checkbox' name='checkbox1'>
<input type='checkbox' name='checkbox2'>

У вас должны быть уникальные имена для каждого флажка, и они должны быть внутри вашей формы.

Чистее отделить код обработки POST от файла, в котором есть форма.В файле обработки POST вам нужно пройтись по всем опубликованным значениям, а затем по их именам, выяснить, какие из них проверены или нет, и выполнить любую необходимую обработку (например, заполнить другую таблицу БД).

0 голосов
/ 11 мая 2018

Флажки должны быть в другой форме. Затем вы можете проверить значение его кнопки отправки и обработать входные данные.

Вам также нужно дать флажкам имя в стиле массива. Тогда элемент $_POST будет массивом значений, которые вы можете зациклить.

В приведенном ниже коде я изменил значение флажка, чтобы он просто содержал номер курса, которого должно быть достаточно для его идентификации при вставке (я предполагаю, что это уникальный идентификатор строки).

if(isset($_POST['yes_courses_button'])){ //if the user has taken courses taken so far
    session_start();
    $netID = $_SESSION['curr_user'];

    echo "Please select the courses you have taken so far."."<br>"."<br>";

    include 'php_mysql_connect.php'; //retrieving all course from DB
    $result = mysqli_query($connect, "SELECT subject, course_number, course_title FROM course ORDER BY course_number");
    error_reporting(0);
    $num_courses = 83;

    ?>
    Please select your courses<br>
    <form action='' method='POST'>
    <?php
    while ($row = mysqli_fetch_array($result)) {
        echo "<input type='checkbox' name='coursenum[]' value='$row[1]'>$row[0] $row[1] - $row[2]"."<br>";
    }
    ?>
    <input type="submit" name="choose_courses" value="Save Courses">
    </form>
    <?php
}

if (isset($_POST['choose_courses'])) {
    foreach ($_POST['coursenum'] as $course_number) {
        // insert this course number into database
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...