Как обработать параметры формы ajax с помощью PHP-скрипта - PullRequest
2 голосов
/ 21 августа 2010

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

<div class="menu-item">
<input type="text" value="3" readonly="readonly" class="quantity" name="quantity">
<input type="text" value="Menu Item 3" readonly="readonly" class="item" name="item">
<input type="text" value="80.00" readonly="readonly" class="price" name="price">
</div>
...etc

Моя проблема в том, что я не даю атрибут name дляquantity, item и price уникальный идентификатор, через который я передаю параметры на серверную сторону:

quantity=3&item=Menu+Item+3&price=80.00&quantity=2&item=Menu+Item+2&price=50.00&quantity=1&item=Menu+Item+1&price=30.00&total=370.00&name=Alex&table=10&terms=on

Я могу легко изменить его так, чтобы name sбыть количеством1, предметом1, ценой1, количеством2, предметом2, ценой2 и т. д., но в любом случае я не уверен, как лучше обойти эти наборы параметров с помощью PHP, чтобы я мог убедиться, что я обрабатываю каждый quantity, item иprice что соответствует предмету.

Спасибо, Алекс

Ответы [ 3 ]

6 голосов
/ 21 августа 2010

Если вы называете поля как quantity[], item[] и price[], PHP соберет их в массив, названный в честь каждой вещи.Просто убедитесь, что все количества, позиции и цены находятся в одном и том же порядке на странице (и ни один из них не пропускает поле), и $_POST['quantity'][0] будет первым количеством, $_POST['price'][0] первой ценой и т. Д.

0 голосов
/ 21 августа 2010

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

//number of fields/item
$fields = 3;
$itemCount = count($_GET) / $fields;

for ($i = 1; i <= $fields; i++) {
     $quantity = $_GET['quantity'.i];
     $item = $_GET['item'.i];
     $price = $_GET['price'.i];
     processFields($quantity, $item, $price);
}
0 голосов
/ 21 августа 2010

Я обычно делаю следующее:

Создайте свою форму со следующими именами: количество-х, элемент-х, цена-х;

Вот как вы ее обрабатываете:

$values = array();
foreach($_POST AS $key => $value ){
$keyPart = explode('-',$key);
$values[$keyPart[1]][$keyPart[0]] = $value
}

Это создаст массив, где каждый элемент содержит массив с вашими сгруппированными значениями.Таким образом, элемент 0 будет [количество-1, цена-1, пункт-1] и 1 будет [количество-2, цена-2, элемент-2]

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

РЕДАКТИРОВАТЬ: Это также будет работать на $ _GET

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