Я генерирую динамическую форму заказа в php на основе различных критериев поиска из данных в базе данных MySQL. Форма заказа представляет собой список позиций и может содержать несколько сотен позиций. Каждая позиция будет иметь следующие данные (имитируемые имена): Строка № ItemID Единицы товара/Цена/единица товара. Помимо приведенных выше данных, извлеченных из базы данных, я добавляю 2 динамических полей: 1. флажок для идентификации элементов на заказ 2. текстового поля для ввода Количества упорядоченногоАнализ массива из динамической формы в скрипт
<?php
$row=0;
while($item = mysqli_fetch_array($result))
{
$row++;
$id = "$item[ProductID]";
$name = "$item[Name]";
$units = "$item[PerPack]";
$price = "$item[Price]";
echo "<tr>
<td align='center'>$row</td>
<td align='center'>$id</td>
<td>$name</td>
<td align='center'>$units</td>
<td align='center'>$price</td>
<td align='center'><input type=checkbox id=$row name=ReviewID[] value='$id' /></td>
<td align='center'><input type=text size=3 maxlength=3 id=$row name=ReviewQty[] /></td>
</tr>";
}
?>
Порядка форма затем обрабатывается скриптом проверки заказа. После долгих поисков и экспериментов я придумал следующий сценарий.
<?php
$keys_array = $_POST['ReviewID'];
$keys_count = count($keys_array);
$values_array = array_filter($_POST['ReviewQty']);
$values_count = count($values_array);
$order_array = array_combine($keys_array, $values_array);
if($keys_count != $values_count){
$status = 'Error';
$error_message = "ORDER Quatities Mismatch";}
// html code omitted
if($status == 'Error') echo $error_message;
//html code omitted
if($keys_count != $values_count) exit();
//html code omitted
while (list ($key, $val) = each ($order_array))
{
echo "<tr>
<td align='center'>...</td>
<td align='center'>$key</td>
<td>...</td>
<td>...</td>
<td align='center'>...</td>
<td align='center'>...</td>
<td align='center'>...</td>
<td align='center'>$val</td>
</tr>";
}
?>
Проблема с моим решения заключается в том, что это не проверяет, что каждый установлен флажок имеет соответствующее значение Кол-во в той же строке. Другими словами, если я проверю все 5 полей и введите значения в любые 5 текстовых полей, он пройдет тест.
Мне нужна проверка, которая проверяет флажок в той же строке (строке), что и значение qty. Было бы замечательно, если бы я смог разобрать все данные позиции для выбранного флажка, иначе мне нужно было бы сделать еще один запрос MySQL в сценарии обзора.
У меня возникли проблемы с получением массива с 2 значениями для каждой клавиши. Любая помощь/улучшения будут оценены.
TIA.