Получить значения ввода type = "text" по установленным флажкам - PullRequest
0 голосов
/ 21 мая 2019

Я делаю небольшой проект и хочу получить все значения ввода type = "text", если флажок установлен.Как это работает?


<form name="test" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" target="_blank">
<?php
    foreach ($data['items'] as $key => $value) {
         echo "<label class=\"Items\">
            <input type=\"checkbox\" checked=\"checked\" name=\"items[]\" value=\"$value\">
            <input type=\"text\" value=\"$value\">
        </label>";
    }
?>
</form>

Я уже пробовал это, но он возвращал только мои значения флажка, а не текстовые значения.

if(isset($_POST['items'])) {
     $items = $_POST['items'];
}

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Прежде всего, чтобы передать значения текстового поля на сервер, вам также нужно дать текстовому полю имя:

<input type="text" name="values[]" value="$value">

Один из способов синхронизировать ваши текстовые поля с вашими флажками - это небольшой взлом:

foreach ($data['items'] as $key => $value) {
     echo "<label class='Items'>
        <input type='hidden' name='keys[{$key}]' value='checkbox_isnt_selected'>
        <input type='checkbox' checked='checked' name='keys[$key]' value='$value'>
        <input type="text" name='values[$key]' value='$value'>
    </label>";
}

Таким образом, если флажок не установлен, вы получаете checkbox_isnt_selected на своем сервере, в противном случае вы получаете соответствующий $value. Флажок будет перезаписывать значение скрытого ввода при установке.

0 голосов
/ 21 мая 2019

Если вы хотите использовать $ _POST ['items'] для доступа ко всем данным из вашей формы, сделайте это так:

<form name="test" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" target="_blank">
<?php
    foreach ($data['items'] as $key => $value) {
         echo "<label class='Items'>
            <input type='checkbox' checked='checked' name='items[$key][]' value='$value'>
            <input type='text' name='items[$key][]' value='$value'>
        </label>";
    }
?>
</form>
...