PHP читает отправленную форму и помещает результаты в массив - PullRequest
0 голосов
/ 26 июля 2011

У меня есть форма с динамически создаваемыми полями ввода - после ее отправки я хотел бы поместить все сгенерированные данные в массив, используя php.

Пример HTML: -

<fieldset id="usp">
<input type="text" id="usp_1" name="usp_1" />
<input type="text" id="usp_2" name="usp_2" />
</fieldset>
<input type="hidden" id="uspTot" name="uspTot" />

input id = usp_1 и usp_2 были сгенерированы Jquery на лету - в зависимости от пользователя может быть любое количество этих входных данных, поэтому Jquery сохраняет подсчет в скрытом поле id = uspTot

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

$uspCount = $_POST["uspTot"];
for ($i=1; $i<=$uspCount; $i++)
 {
  $uspString[$i] = $_POST["usp_" + $i];
 };

Конечно, это не работает! Но я не понимаю, почему нет?

Есть указатели?

РЕДАКТИРОВАТЬ: это код ошибки, которую я получаю: -

Примечание: неопределенная переменная: POST в C: \ Users \ Andrew \ Documents \ Websites \ example \ html \ submitbrief.php в строке 21

РЕДАКТИРОВАТЬ 2:

Это var_dump по запросу @Michael: -

array(36) { ["co_name"]=> string(11) "Daves autos" ["co_about"]=> string(16) "established 1969" ["co_id"]=> string(10) "Dave Smith" ["co_email"]=> string(21) "dave@davesautos.co.uk" ["co_phone"]=> string(11) "34435454545" ["usp_1"]=> string(9) "its great" ["usp_2"]=> string(9) "i love it" ["usp_3"]=> string(15) "its about car4s" ["uspTot"]=> string(1) "3" ["co_keyw_1"]=> string(0) "" ["co_keyw_2"]=> string(0) "" ["co_keyw_3"]=> string(0) "" ["co_keyw_4"]=> string(0) "" ["co_keyw_5"]=> string(0) "" ["co_compet"]=> string(0) "" ["ex_pos"]=> string(0) "" ["ex_neg"]=> string(0) "" ["ex_url"]=> string(0) "" ["pac_basic"]=> string(3) "yes" ["pac_cms"]=> string(2) "no" ["pac_eco"]=> string(2) "no" ["pac_ax"]=> string(4) "base" ["pac_ie6"]=> string(2) "no" ["pac_url"]=> string(0) "" ["pac_dom"]=> string(2) "no" ["pac_ins_1_url"]=> string(0) "" ["pac_ins_1_det"]=> string(0) "" ["pac_keyw_1"]=> string(0) "" ["pac_keyw_2"]=> string(0) "" ["pac_keyw_3"]=> string(0) "" ["pac_keyw_4"]=> string(0) "" ["pac_keyw_5"]=> string(0) "" ["pac_name"]=> string(0) "" ["pac_dem"]=> string(0) "" ["pac_gui"]=> string(0) "" ["pac_tex"]=> string(0) "" } 

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Почему бы не изменить разметку HTML, чтобы значения публиковались в виде массива, и забыть о скрытых подсчетах или о других вещах?

Измените разметку на следующую:

<fieldset id="usp">
    <input type="text" id="usp_1" name="usp[1]" />
    <input type="text" id="usp_2" name="usp[2]" />
</fieldset>

Затем получите доступ к массиву значений с помощью:

$arrValues = $_POST['usp'];
1 голос
/ 26 июля 2011

Попробуйте это в цикле for:

$uspString[$i] = $_POST["usp_" . $i];
1 голос
/ 26 июля 2011

Вы должны использовать.вместо +$ uspString [$ i] = $ POST ["usp " . $ i];

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