Сгруппировать блоки выбора в массив для записи? - PullRequest
1 голос
/ 16 декабря 2009

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

<select name="my_data[]" multiple="multiple"/>

Можно ли иметь несколько разных полей выбора с «одиночными» значениями и помещать их все в массив? т.е.

<select id="select-1" name="my_data[]"/>
<select id="select-2" name="my_data[]"/>

результат будет

[
    0 => {value of select-1},
    1 => {value of select-2}
]

Что было бы хорошим способом объединить данные из выборок в массив, если это невозможно?

Ответы [ 3 ]

2 голосов
/ 16 декабря 2009

Ах, просто удаление нескольких, похоже, работает. Помощник FormSelect Zend Framework автоматически добавил его, когда в имени элемента формы есть «[]», а я этого не осознавал.

1 голос
/ 16 декабря 2009

Предполагается, что вы получаете все <select> на странице:

// get all selects
var boxes = document.getElementsByTagName("select"),
    arr = []; // your final values array

// for each select, pull out the value and push it into 'arr'
for(var i = 0, len = boxes.length; i < len, i++) {
  arr.push(boxes[i].value);
}
1 голос
/ 16 декабря 2009

Хотя вы, вероятно, можете это сделать, я бы не советовал. Просто потому, что кто-то еще не читает код, это не совсем понятно.

Лучше всего просто объединить их на стороне сервера. Предполагая, что:

<select id="select-1" name="data_1[]"/>
...

<select id="select-2" name="data_2[]"/>
...

На стороне PHP:

$data1 = $_POST['data_1'];
$data2 = $_POST['data_2'];
$combined = array_merge($data1, $data2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...