Как сохранить массив и динамический флажок остается проверенным после отправки? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть один динамический флажок (может быть ++), который должен оставаться проверенным после отправки пользователем.

Я уже попробовал некоторые приемы, такие как использование скрытого ввода перед моим кодом флажка в HTML. Теперь я застрял в создании isset (_POST), и флажок не остался отмеченным.

Вот мой HTML:

<input type="hidden" name="hidden_name[]" id="hidden_name0">                                                                

<input type="checkbox" name ="name[]" id="name0">

<label for="name">Name</label>

-------- -------- ОБНОВЛЕНИЕ И в моем PHP-файле вот код:

$valueName = array();
        if(isset($_POST["hidden_name"]))
        {
                    foreach($_GET['hidden_name'] as $value)
                {
                    array_push($valueName,$value);
                }
        }

Этот код не работает: /

Как сделать так, чтобы флажок оставался отмеченным после того, как пользователь проверит его и отправит форму? Что я должен написать на PHP? Мне действительно нужен скрытый ввод перед моим флажком?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

isset может возвращать false, поскольку переданное значение равно NULL.Я предлагаю добавить value='1' в скрытое поле ввода - или вы обновляете это поле соответствующим значением флажка?

В качестве альтернативы, у вас есть несколько других вариантов:

  1. Измените name для каждого динамического флажка, чтобы иметь идентификатор.

    <input type="checkbox" name="name-x" <?php echo isset( $_POST['name-x'] ) ? 'checked="checked"' : '' ?> />
    

    Где x может быть вашим динамическим идентификатором.Обратите внимание на добавление кода PHP и использование троичного оператора, вы можете установить флажок, если установлен $_POST['name-x'].

  2. Добавить значение в флажок.

    <input type="checkbox" name="name[]" id="name0" value="name0" />
    <input type="checkbox" name="name[]" id="name1" value="name1" />
    <input type="checkbox" name="name[]" id="name2" value="name2" />
    

    Однако вам нужно сопоставить это значение в вашем коде PHP.

    <?php
    if ( isset( $_POST['name'] ) ) {
        $values = array();
        foreach( $_POST['name'] as $value ) {
            array_push( $values, $value );
        }
    }
    ?>
    

    Затем вам нужно снова изменить флажок, чтобы иметь встроенный PHP.

    <input type="checkbox" name="name[]" id="name0" value="name0" <?php echo in_array( "name0", $values ) ? 'checked="checked"' : '' ?> />
    <input type="checkbox" name="name[]" id="name1" value="name1" <?php echo in_array( "name1", $values ) ? 'checked="checked"' : '' ?> />
    <input type="checkbox" name="name[]" id="name2" value="name2" <?php echo in_array( "name2", $values ) ? 'checked="checked"' : '' ?> />
    

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

0 голосов
/ 23 апреля 2019

Я предполагаю, что у вас есть форма с несколькими флажками, и я пытаюсь проверить, какой флажок установлен.Вот пример кода

<form action="" method="post">
    <label for="name">Name 1</label>
    <input type="checkbox" name ="name[]" value="name1">

    <label for="name">Name 2</label>
    <input type="checkbox" name ="name[]" value="name2">

    <label for="name">Name 3</label>
    <input type="checkbox" name ="name[]" value="name3">

    <label for="name">Name 4</label>
    <input type="checkbox" name ="name[]" value="name4">


    <button type="submit" name="submit">Submit</button>
</form>

и код php

<?php
    if(isset($_POST["submit"])){
        $valueName = array();
        foreach($_POST['name'] as $value){
        array_push($valueName,$value);
        print_r($valueName);
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...