Ответ 1
Использовать массивные поля:
<input name="name_for_the_items[]"/>
Вы можете прокручивать поля:
foreach($_POST['name_for_the_items'] as $item)
{
//do something with $item
}
Я отправляю некоторые данные на другую страницу из формы. Это корзина для покупок, и форма, которая отправляется, создается на странице раньше, в зависимости от количества предметов в корзине. Например, если есть только 1 элемент, тогда у нас есть только имя поля "item_name_1", в котором должно храниться значение типа "Наклейка" и "item_price_1", в котором хранится цена этого элемента. Но если у кого-то есть 5 элементов, нам нужны "item_name_2", "item_name_3" и т.д., Чтобы получить значения для каждого элемента до пятого.
Каким будет наилучший способ прокрутки этих элементов для получения значений?
Вот что у меня есть, что явно не работает.
extract($_POST);
$x = 1; // Assuming there always one item we're on this page, we set the variable to get into the loop
while(${'item_name_' .$x} != '') {
echo ${'item_name' .$x};
$x++;
}
Я по-прежнему относительно новичок в таком использовании, поэтому я не совсем так, как наилучшим образом справиться с этим.
Спасибо.
Использовать массивные поля:
<input name="name_for_the_items[]"/>
Вы можете прокручивать поля:
foreach($_POST['name_for_the_items'] as $item)
{
//do something with $item
}
Во-первых, пожалуйста, не используйте extract(), это может быть проблема безопасности, потому что легко манипулировать параметрами POST
Кроме того, вам не нужно использовать имена переменных переменных (что звучит нечетно):
foreach($_POST as $key => $value) {
echo "POST parameter '$key' has '$value'";
}
Чтобы убедиться, что у вас есть только параметры, начинающиеся с "item_name", вы можете проверить его так:
$param_name = 'item_name';
if(substr($key, 0, strlen($param_name)) == $param_name) {
// do something
}
Я бы так не сделал
Я бы использовал массивы имен в элементах формы
поэтому я бы получил макет
$_POST['field'][0]['name'] = 'value';
$_POST['field'][0]['price'] = 'value';
$_POST['field'][1]['name'] = 'value';
$_POST['field'][1]['price'] = 'value';
тогда вы можете сделать срез массива, чтобы получить нужную сумму