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
Форумы портала PHP.SU :: Версия для печати :: Передача массива через форму
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Передача массива через форму

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

1. Allegamex - 13 Мая, 2013 - 14:11:49 - перейти к сообщению
Здравствуйте уважаемые знатоки. Вновь нужна ваша помощь.

Что имеем:
Форму добавления пассажиров, их может быть много. Форма примерно следующего вида:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="/action/handler.php">
  3. Имя: <input type="text" name="fname[]" value=""><br>
  4. Фамилия: <input type="text" name="sname[]" value=""><br>
  5. Сколько лет: <input type="text" name="old[]" value=""><br>
  6.  
  7. <input type="hidden" name="total_pass" value="1"> <!-- При добавлении пассажира поле value увеличивается на 1, что б узнать сколько пассажиров всего -->
  8. </form>
  9.  


Форма утрирована для наглядности.
Как я понимаю благодаря name="fname[]" методом пост передается массив.

Что надо:

Результат передается в обработчик, в котором после определенный махинаций это всё по задумке должно записаться в сессию, подскажите как правильно словить этот массив fname[] и загнать в сессию.

Правильно ли я понимаю что в обработчике должно получится что то типа этого:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $total_pass=$_POST['total_pass'];
  4.  
  5. for($i=0;$i<$total_pass;$i++){
  6. $fname = $_POST['fname'][1];
  7. $_SESSION[fname][1] = $fname;
  8. }
  9.  
  10. ?>


Подскажите пожалуйста.
2. avtor.fox - 13 Мая, 2013 - 14:46:27 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach($_POST['fname'] as $v){
  2.     $_SESSION['fname'][] = $v;
  3. }


но как-то всё у Вас однако того Однако
3. LIME - 13 Мая, 2013 - 14:46:37 - перейти к сообщению
Allegamex пишет:
Правильно ли я понимаю
правильно
не проще было попробовать чем спрашивать?
4. muravey - 13 Мая, 2013 - 15:07:59 - перейти к сообщению
На быструю руку
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo "<pre>";
  4. print_r($_POST);
  5. echo "</pre>";
  6. ?>
  7.  
  8. <?PHP
  9. echo "<pre>";
  10. print_r($_SESSION);
  11. echo "</pre>";
  12.  
  13. unset($_SESSION['fname']);
  14. ?>
  15.  
  16. <form method="post">
  17. Пассажир1: <input type="text" name="fname[]" value=""><br>
  18. Пассажир2: <input type="text" name="fname[]" value=""><br>
  19. Пассажир3: <input type="text" name="fname[]" value=""><br>
  20. <input type="submit">
  21. </form>
  22.  
  23. <?PHP
  24. for($i=0;$i<count($_POST['fname']);$i++)
  25. {
  26.     if(!empty($_POST['fname'][$i]))
  27.     {
  28.         $_SESSION['fname'][] = $_POST['fname'][$i];
  29.     }
  30. }
  31. ?>
  32.  
5. Allegamex - 13 Мая, 2013 - 15:12:35 - перейти к сообщению
Спасибо господа, ответ нашел как и в прошлой своей теме, ещё до того как написал, но всё равно спасибо.

Лайм, я попробовал, но что то не выходило. Вот и написал.

avtor.fox, щас попробую твой вариант, самый лаконичный.
6. avtor.fox - 13 Мая, 2013 - 15:20:17 - перейти к сообщению
Allegamex, ещё проще -
PHP:
скопировать код в буфер обмена
  1. $_SESSION['fname'] = $_POST['fname'];


не забывайте про обработку данных. ну пустые значения например и прочее.
7. Allegamex - 13 Мая, 2013 - 15:50:48 - перейти к сообщению
avtor.fox пишет:
Allegamex, ещё проще -
PHP:
скопировать код в буфер обмена
  1. $_SESSION['fname'] = $_POST['fname'];


не забывайте про обработку данных. ну пустые значения например и прочее.


Эт всё есть и обработка переменной с htmlspecialchars и проверки...просто массив как то подвернулся под конец работы.

 

Powered by ExBB FM 1.0 RC1