Итерации по отправленной форме
Когда пользователь изменяет значение количества одного или нескольких продуктов и щелкает на кнопке "Update" для отправки формы, то информация снова передается на страницу shopcart.php. Страница shopcart.php содержит сценарий для обновления этих изменений в таблице ShopCart. Этот сценарий находится в начале страницы для перехвата изменений, когда посылается форма.
Назначение этого сценария состоит в обновлении таблицы ShopCart значениями количества продуктов, переданных из формы. Мы знаем, что имеется неопределенное число полей количества, имя каждого из которых начинается с буквы "Q", и мы знаем, что значения формы, приходящие на страницу, могут быть в любом порядке.
До сих пор мы всегда знали имена и номера полей на формах. Это связано с тем, что мы проектировали формы, именовали поля и определяли, сколько будет полей. Но здесь это не так. Мы не знаем, сколько имеется полей (это зависит от того, сколько объектов имеется в корзине покупателя), и мы не знаем их имен (за исключением того, что они начинаются с буквы "Q"). Поэтому мы не можем выполнить обработку формы, как это делалось ранее.
Однако с помощью PHP можно решить эту проблему. Можно выполнить итерации по всем элементам $_REQUEST, чтобы определить имена отправленных полей и соответствующие значения. Это реализуется с помощью специального оператора цикла For Each...Next, общая структура которого применительно к формам имеет следующий вид:
foreach($_REQUEST as $key => $value)
где $_REQUEST является ассоциативным массивом, содержащим все пары имя/значение для элементов управления формы на странице. Этот цикл выполняется для каждой пары имя/значение, присланной из формы. На каждой итерации переменная $key содержит имя из пары имя/значение, а $value указывает на значение, связанное с этим именем. Массив имеет следующий формат $_REQUEST[$key] = $value для каждой пары имя/значение, связанной с формой.
Затем можно использовать эту итерационную структуру для просмотра присланных позиций для обновления корзины покупателя и определения имен полей и значений. Когда встречается поле с именем, начинающимся с буквы "Q", то мы знаем, что это поле количества, содержащее значение для обновления таблицы ShopCart. Мы можем также определить из названия продукт, для которого задано значение количества.