PHP: не получает некоторые переменные POST? - PullRequest
0 голосов
/ 03 марта 2010

У меня есть форма, она принимает следующие значения:

image_title,
image_description,
image_file

Я хотел представить эту форму несколько раз, поэтому я сделал следующее:

image_title_1,
image_description_1,
image_file_1

image_title_2,
image_description_2,
image_file_2

Несколько раз, поэтому у меня есть поля 1 - 10. Я отправляю форму и распечатываю содержимое массива POST, единственная проблема - это любой "image_title_ #" после того, как "image_title_1" не существует в массиве: но все остальное делает.

Таким образом, массив будет выглядеть примерно так:

image_title_1 -> "title!"
image_description_1 -> "description!"
image_file_1 -> file

image_description_2 -> "description!"
image_file_2 -> file

image_description_3 -> "description!"
image_file_3 -> file

Итак, чтобы выяснить, что это, я поменял описание и заголовок друг с другом, однако заголовок все равно не отображается после 1. Я не занимаюсь ЛЮБОЙ обработкой, я буквально просто распечатываю массив $ _POST до того, как даже касаясь этого. Это не имеет смысла, что может быть причиной?

Чтобы уточнить: проблема в том, что «image_title_ #» (пример: image_title_3) не передается, за исключением image_title_1, даже если я переставлю порядок. Я не делаю обработку перед выводом.

Редактировать, источник HTML просто:

<form method="post" action="">
    <input type="text" name="image_title_1"></input>
    <input type="text" name="image_description_1"></input>
    <input type="text" name="image_file_1"></input>

    <input type="text" name="image_title_2"></input>
    <input type="text" name="image_description_2"></input>
    <input type="text" name="image_file_2"></input>

    <input type="text" name="image_title_3"></input>
    <input type="text" name="image_description_3"></input>
    <input type="text" name="image_file_3"></input>

    <input type="submit" name="submit" value="submit"></input>
</form>

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

Лучшим решением было бы преобразовать их в массив, попробуйте вместо этого:

<form method="post" action="">
    <input type="text" name="image_title[]"></input>
    <input type="text" name="image_description[]"></input>
    <input type="text" name="image_file[]"></input>

    <input type="submit" name="submit" value="submit"></input>
</form>

Теперь в вашем PHP-скрипте вы можете получить их массив следующим образом:

print_r($_POST['image_title']);
print_r($_POST['image_description']);
print_r($_POST['image_file']);

.

Суффикс имени поля с [] преобразует его в массив. Еще одна хорошая вещь - это то, что он также сократил ваш код.

Когда у вас есть массив, вы можете просмотреть его, используя foreach:

foreach($_POST['image_title'] as $key => $value)
{
  // process them any way you want
}
0 голосов
/ 03 марта 2010

Код работает. Я просто вырезал и вставил вашу форму и отправляю тест

  Array
(
[image_title_1] => 1
[image_description_1] => 2
[image_file_1] => 3
[image_title_2] => 4
[image_description_2] => 5
[image_file_2] => 6
[image_title_3] => 7
[image_description_3] => 8
[image_file_3] => 9
[submit] => submit
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...