2015-02-03 2 views
0

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

код для входов:

for ($x = 0; $x < 5; $x++) 
    for ($y = 0; $y < 12; $y++){ 
         echo '<input type="text" name="'.$x.'"> Bar 1<br/>'; 
    } 

Как я могу получить все 12-е значения в массиве на стороне сервера с помощью PHP? Я вообще знаю, как использовать пост, но в этом случае, что я должен положить в скобки $ _POST []? И какой правильный синтаксис сделать имя массивом?

+0

Как вы уже сказали, что это фиксируется так просто использовать $ _POST [ '12'] –

+0

у вас есть 60 входов ... => name = ['. $ X.'] ['. $ Y.'] – donald123

+0

Я подумал об этом. Но то, что усложняет, это функция, которую я использую для проверки всей строки со специальным флажком. Если изменить имя, подобное этому, функция не будет работать. –

ответ

1

Пройдите через сообщение и когда-либо 12-е вытащите значение, просто добавьте счетчик. Если другая опубликованная информация находится в форме, выполните предварительный матч для первой части вашего имени ключа, а затем перейдите по счетчику с этим именем.

foreach ($_POST as $key => $value) 
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>"; 

Если такой подход не является привлекательным, JSON кодирования значения отправляются в массив в PHP затем сделать json_decode в массив PHP, а затем вынимают каждый двенадцатый элемент.

+0

ли решение с Json работает, даже если я не изменяю имя флажков? Поскольку, если я меняю свое имя, я не могу обрабатывать другой скрипт, который очень важен для других задач. –

+0

. Метод json должен добавить функцию для отправки в JavaScript, которая примет значения формы в массив, а затем json закодирует их , Затем отправьте эту строку на свой скрипт на стороне сервера в submit. Обязательно используйте JSON.stringify (значения) для json-кодирования, если у вас нет jquery, а затем просто используйте сериализацию – Asheliahut

0

Ваш код создаст двенадцать полей ввода с тем же именем ($x), которые не будут работать (каждый вход требует уникального имени).

Если я правильно помню, вы можете сделать что-то вроде этого:

echo '<input type="text" name="'.$x.'[]"> Bar 1<br/>'; 

и он будет генерировать массив в $ _POST: $_POST[$x][0] = 'first', $_POST[$x][1] = 'second', ...

Смежные вопросы