Соберите определенные поля в массив - PullRequest
1 голос
/ 04 мая 2010

Каждый div с классом "row" добавляется по запросу пользователя, чтобы иметь возможность добавлять несколько элементов одновременно. Итак, теперь вопрос в том, как собрать все формы в массив, который может прочитать PHP (например, JSON). Я предполагаю, что уже есть какой-то простой и эффективный способ сделать это?

<div class="container">
    <div class="row">
        <input type="text" name="value1" id="textfield" />
        <input type="text" name="value2" id="textfield" />
        <input type="text" name="value3" id="textfield" />
    </div>

</div>

Вот что я хотел бы добиться из показанного примера:

array( 
    array ('value1' => '',
           'value2' => '',
           'value3' => '')
);

Спасибо!

Обновление: Форма будет обрабатываться с помощью PHP, и было бы просто замечательно сделать что-то вроде цикла foreach для конкретного содержимого контейнера-div.

Ответы [ 3 ]

5 голосов
/ 04 мая 2010

Дайте каждой «группе» входов одно и то же имя, затем добавьте квадратные скобки в конец

<div class="container">
    <div class="row">
        <input type="text" name="value1[]" id="textfield" />
        <input type="text" name="value2[]" id="textfield" />
        <input type="text" name="value3[]" id="textfield" />
    </div>
    <div class="row">
        <input type="text" name="value1[]" id="textfield" />
        <input type="text" name="value2[]" id="textfield" />
        <input type="text" name="value3[]" id="textfield" />
    </div>
</div>

Когда вы публикуете форму, ваша переменная php $_POST будет содержать массивы для value1, value2 и value2:

var_dump($_POST); // array('value1' = array(...

Затем можно выполнить итерацию, чтобы «перегруппировать» строки в PHP (но сначала я бы изменил имена полей на field1 и т. Д., А не на value1):

$rows = array(); // set up an empty array to hold your rows

// loop through each POST var
foreach($_POST AS $key=>$field) {
    if(is_array($field)) {
        foreach($field AS $rowIndex=>$fieldValue) {
            $rows[$rowIndex][$field] = $fieldValue; // put the value in a the array by row, field
        }
    }
}

var_dump($rows);

Это даст:

array(
    [0] => array(
        'field1' => 'value1',
        'field2' => 'value2',
        'field3' => 'value3'
    ),
    [1] => array(
        'field1' => 'value1',
        'field2' => 'value2',
        'field3' => 'value3'
    ),
    ...
)
0 голосов
/ 04 мая 2010

Чтобы конвертировать XML в JSON, вы можете попробовать:

0 голосов
/ 04 мая 2010
<div class="container">
    <div class="row">
        <input type="text" name="value[0][value1]" class="textfield" />
        <input type="text" name="value[0][value2]" class="textfield" />
        <input type="text" name="value[0][value3]" class="textfield" />
    </div>
    <div class="row">
        <input type="text" name="value[1][value1]" class="textfield" />
        <input type="text" name="value[1][value2]" class="textfield" />
        <input type="text" name="value[1][value3]" class="textfield" />
    </div>
</div>

Изменен идентификатор класса, поскольку повторное использование того же идентификатора является недействительным HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...