Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как передать массив через HTML форму в PHP?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
anoth3r
Отправлено: 15 Августа, 2009 - 12:20:19
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Есть форма, которая передает количество текстовых полей в функцию.
Функция генерирует форму с этим количеством текстовых полей:
PHP:
скопировать код в буфер обмена
  1.  
  2. function stepTwo($col)
  3. {
  4. echo "Введите имена колонок:<br>";
  5. echo "<form method='post' action=''>";
  6. for($i=1;$i<=$col;$i++)
  7. {
  8. echo $i." <input type='text' name='col_name[".$i."]' value=''>".($i==$col ? '' : ',')."<br>";
  9. }
  10. echo 'Введите данные:<br>';
  11. for($i=1;$i<=$col;$i++)
  12. {
  13. echo $i." <input type='text' name='col_val[".$i."]' value=''>".($i==$col ? '' : ',')."<br>";
  14. }
  15. echo "<input type='submit' value='отправить'>";
  16. echo '</form>';
  17. }//end function stepTwo()
  18.  

форма должна передавать 2 массива методом post. Но скрипт не определяет массивы.
Попытался передать методом GET, адресная строка выдала: "?col_name%5B1%5D=asd&col_name%5B2%5D=zxc&col_name %5C%5B3%5C%5D=qwe&col_val%5B1%5D=rty&col_val%5B2%5 D=fgh&col_val%5B3%5D=cvb".
Что делаю не правильно? Как решить проблему?
Смотря на передачу данных через метод GET, квадратные скобки в которых должен быть индекс массива передаются абройкадаброй. Поэтому скрипт не определяет массив.
 
 Top
EuGen Администратор
Отправлено: 15 Августа, 2009 - 14:02:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
mrAnderson
Отправлено: 15 Августа, 2009 - 16:43:53
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Как это решил я)

// создание полей, мне нужно было передать кол-во ($quantity) которое введет пользователь определенного товара, который имеет код ($cod), товара могло быть и 10 и 100, и вот что вышло: $cart->num_items($table,$session)) функция подсчета требуемых полей для передачи, и $contents = $cart->display_contents($table,$session); функция которая содержит коды и кол-во начальное.


$contents = $cart->display_contents($table,$session);
$x = 0;
while($x != $cart->num_items($table,$session))
{
$cod = $contents['cod'][$x];
echo "<TD><INPUT TYPE=text size=3 maxlength=30 name=\"".urlencode($cod)."\" ";
echo "value=\"".$contents['quantity'][$x]."\"></TD>";
++$x;
}

///////////////рас-рас, прием, прием.
$contents = $cart->display_contents($table,$session); // количество передаваемых полей.
$x = 0;
while($x != $cart->num_items($table,$session))
{ $cod = $contents['cod'][$x];
$quantity = $_POST[urlencode($cod)];

}

(Отредактировано автором: 15 Августа, 2009 - 16:52:29)

 
 Top
anoth3r
Отправлено: 16 Августа, 2009 - 13:19:40
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)






Эта функция работает с методом GET, мне желательно решить эту задачу методом POST

(Отредактировано автором: 16 Августа, 2009 - 13:20:03)

 
 Top
EuGen Администратор
Отправлено: 16 Августа, 2009 - 15:20:00
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




anoth3r пишет:
Попытался передать методом GET, адресная строка выдала: "?col_name%5B1%5D=asd&col_name%5B2%5D=zxc&col_name %5C%5B3%5C%5D=qwe&col_val%5B1%5D=rty&col_val%5B2%5 D=fgh&col_val%5B3%5D=cvb".

Определяйтесь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
anoth3r
Отправлено: 16 Августа, 2009 - 20:06:25
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




EuGen пишет:
anoth3r пишет:
Попытался передать методом GET, адресная строка выдала: "?col_name%5B1%5D=asd&col_name%5B2%5D=zxc&col_name %5C%5B3%5C%5D=qwe&col_val%5B1%5D=rty&col_val%5B2%5 D=fgh&col_val%5B3%5D=cvb".

Определяйтесь.


Я проверял методом GET чтобы увидеть, почему не определяет массивы, а саму задачу нужно решить ,очень желательно, методом POST
 
 Top
EuGen Администратор
Отправлено: 16 Августа, 2009 - 20:20:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Пишите как есть


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
anoth3r
Отправлено: 17 Августа, 2009 - 00:36:41
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




EuGen пишет:
Пишите как есть


Спасибо за совет! Но я не буду я писать как есть, я хочу понять в чем проблема и как с ней справиться, именно по этому я сюда попал.

(Отредактировано автором: 17 Августа, 2009 - 00:37:39)

 
 Top
Nestor
Отправлено: 17 Августа, 2009 - 01:49:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. echo "<form method='post' action=''>";

почему action пустое?
заполнив action я увидел то что надо


полный код, 2.php замени на твой файл

PHP:
скопировать код в буфер обмена
  1. print "<pre>";
  2. print_r($_POST);
  3. print "</pre>";
  4.  
  5.  
  6. function stepTwo($col){
  7.         echo "Введите имена колонок:<br>";
  8.         echo "<form method='post' action='/2.php'>";
  9.         for($i=1;$i<=$col;$i++){
  10.                 echo $i." <input type='text' name='col_name[".$i."]' value=''>".($i==$col ? '' : ',')."<br>";
  11.         }
  12.         echo 'Введите данные:<br>';
  13.         for($i=1;$i<=$col;$i++){
  14.                 echo $i." <input type='text' name='col_val[".$i."]' value=''>".($i==$col ? '' : ',')."<br>";
  15.         }
  16.         echo "<input type='submit' value='отправить'>";
  17.         echo '</form>';
  18. }
  19. stepTwo(2);

Прикреплено изображение (Нажмите для увеличения)
Untitled-1.jpg

(Отредактировано автором: 17 Августа, 2009 - 01:50:36)



-----
Aurus CMS
 
 Top
EuGen Администратор
Отправлено: 17 Августа, 2009 - 10:08:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если Вы будете использовать POST, то пишите как есть - никакие квадратные скобки не пропадут.
Если Вы будете использовать GET - используйте декодирование для спец. символов. По-моему, все просто.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
anoth3r
Отправлено: 17 Августа, 2009 - 10:19:26
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Спасибо! action не обьязательно заполнять если форма обращаеться к тому же файлу.
Всё дело в том, что я как последний "новичок" Радость неправильно обращался к массиву $_POST.

(Отредактировано автором: 17 Августа, 2009 - 12:01:16)

 
 Top
Мелкий Супермодератор
Отправлено: 17 Августа, 2009 - 10:50:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




anoth3r пишет:
Спасибо! action не обьязательно заполнять если форма обращаеться к тому же файлу.

Но чтобы не было неожиданностей - echo $_SERVER['PHP_SELF'] надо ставить.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 17 Августа, 2009 - 13:17:28
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Посмотрите W3C, станет ясно


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB