Сохранение данных формы в массив

339
08 июня 2017, 08:26

Допустим есть форма, формируемая в цикле, примерно так:

<form method="POST" action="">
    <?php
    foreach ($kurses as $name => $kurs) {
        echo '<h2>Курс - '.$name.'</h2>';
        echo '<input type="text" name="option1"><br>';
        echo '<input type="text" name="option2"><br>';
        echo '<input type="text" name="some_data[]"><br>';
    }
    ?>
    <input type="submit">
</form>

и после отправки формы, нужно сохранить данные формы в виде массива, чтобы ключом массива было название текущего курса в цикле, а значение ключа - настройки, выбранные для текущего курса.
И дело в том, что значение массива может также быть массивом, т.е. после submit переменная $_POST должна быть примерно такой:

array(
    'kurs1' => array(
        'option1' => 'test1',
        'option2' => 'test2',
        'option3' => array(
            'inner_option' => 'test'
        )
    ),
    'kurs2' => array(
        'option1' => 'test1',
        'option2' => 'test2',
    ),
)

вся проблема во вложенном массиве, т.е. ведь нельзя в input записать так:

<input type="text" name="<?=$name?>[some_data[name_data]]">

Подскажите, как правильно сохранять такую форму?

Answer 1

Если я не ошибаюсь вы можете реализовать все это вот так:

<form method="POST" action="">
<?php
foreach ($kurses as $name => $kurs) {
    echo '<h2>Курс - '.$name.'</h2>';
    echo '<input type="text" name="<?=$name?>[option1]"><br>';
    echo '<input type="text" name="<?=$name?>[option2]"><br>';
    echo '<input type="text" name="<?=$name?>[some_data][]"><br>';
}
?>
<input type="submit">

И в some_data будет ваш второстепенный массив.

READ ALSO
Как получить доступ к ошибке mysql?

Как получить доступ к ошибке mysql?

Имеется вот такой код:

303
Как в UBUNTU установить phpmyadmin на php 7.1

Как в UBUNTU установить phpmyadmin на php 7.1

Я установил в UBUNTU 1404 apache2+php7

322
Повтор части таблицы на всех страницах

Повтор части таблицы на всех страницах

Есть шаблон документа Накладной с таблицей и итоговым блокомНужно чтобы шапка таблицы и ее подвал (итоговый блок) повторялись на каждой странице...

326
Невалидная кодировка для SOAP

Невалидная кодировка для SOAP

SOAP-ERROR: Encoding: string '\x94

281