Получение всех проверенных элементов из цикла while и помещение их в базу данных как true или false

#php #mysql #select #checkbox

#php #mysql #выберите #флажок

Вопрос:

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

Однако я не слишком уверен в том, как я могу проверить те, которые выбираются в процессе выбора.

В настоящее время это коды, которые я сделал, чтобы получить и отобразить имена людей, которые зарегистрировались. После нажатия кнопки отправить он перейдет на другую страницу, которая затем обработает, проверит их и пометит как 1 или true для базы данных (MySQL) или установит как 0 или false, если он не был проверен.

 <?php
                    if ($totalShortlist > 0) {
                        ?>

                        <?php
                        while ($row = mysqli_fetch_assoc($result)) {
                            $firstName = $row['first_name'];
                            $lastName = $row['last_name'];
                            ?>        

                            <form id="selectionProcess" action = "doShortlistProcess.php?id=<?php echo $id ?>" method = "post">
                                <fieldset data-role="controlgroup">
                                    <label><input type="checkbox" name="selectionProcess" id="selectionProcess" value="<?php echo $id ?>"/><?php echo $firstName; ?> <?php echo $lastName; ?></label>
                                </fieldset>
                                <?php
                            }
                            ?>
                            <input type="submit" class="btnSelect" data-theme="b" data-inline="true" name="shortlistCandidate" value="Submit Shortlisted Candidates"/>
                        </form>

                        <?php
                    }
                    // end for loop
                    else {
                        echo "No candidates to be shortlisted";
                    }
                    mysqli_close($link);
                    ?> 
  

$id, как показано, является перенесенным из списка категорий на предыдущей странице, что позволяет отображать все имена в этих категориях.

Комментарии:

1. Это не обязательно решает вашу проблему, но вы открываете много тегов <form> и закрываете только 1.

Ответ №1:

Ваш код помещает форму в неправильное место по сравнению с циклом while. Действие также не требует, чтобы вы составляли строку запроса. Лучший код (осторожно, я также вырезал некоторую презентацию):

 if ($totalShortlist > 0) {
?>

    <form id="selectionProcess" action = "doShortlistProcess.php" method = "post">

    <fieldset>

<?php

    // use while loop to display a tick box for each item

    while ($row = mysqli_fetch_assoc($result)) {
        $firstName = $row['first_name'];
        $lastName = $row['last_name'];
?>                
        <label>
            <input type="checkbox" name="selectionProcess" id="selectionProcess" value="<?php echo $id ?>"/>
            <?php echo $firstName; ?> <?php echo $lastName; ?>
        </label>
    <?php
    } // end of while loop
    ?>
    </fieldset>
    <input type="submit"/>
    </form>

    <?php
}    // end of shortlist > 0
  

Я рекомендую вам протестировать этот код, используя метод GET. Это покажет вам, какую форму принимает отправка.
Для обработки результата вы должны использовать список ответов, обработать его и превратить в один или несколько операторов SQL.

Альтернативой было бы использовать действие для каждого флажка, но затем использовать ajax для страницы php, которая изменила бы статус отдельного подписчика. Изменение будет внесено немедленно, как только пользователи нажмут.