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 :: Передача массива через форму

 PHP.SU

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


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

> Без описания
Allegamex
Отправлено: 13 Мая, 2013 - 14:11:49
Post Id


Новичок


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


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




Здравствуйте уважаемые знатоки. Вновь нужна ваша помощь.

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

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. ?>


Подскажите пожалуйста.

(Отредактировано автором: 13 Мая, 2013 - 14:15:50)

 
 Top
avtor.fox
Отправлено: 13 Мая, 2013 - 14:46:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




PHP:
скопировать код в буфер обмена
  1. foreach($_POST['fname'] as $v){
  2.     $_SESSION['fname'][] = $v;
  3. }


но как-то всё у Вас однако того Однако
 
 Top
LIME
Отправлено: 13 Мая, 2013 - 14:46:37
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




Allegamex пишет:
Правильно ли я понимаю
правильно
не проще было попробовать чем спрашивать?
 
 Top
muravey
Отправлено: 13 Мая, 2013 - 15:07:59
Post Id


Новичок


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


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




На быструю руку
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.  
 
 Top
Allegamex
Отправлено: 13 Мая, 2013 - 15:12:35
Post Id


Новичок


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


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




Спасибо господа, ответ нашел как и в прошлой своей теме, ещё до того как написал, но всё равно спасибо.

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

avtor.fox, щас попробую твой вариант, самый лаконичный.
 
 Top
avtor.fox
Отправлено: 13 Мая, 2013 - 15:20:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




Allegamex, ещё проще -
PHP:
скопировать код в буфер обмена
  1. $_SESSION['fname'] = $_POST['fname'];


не забывайте про обработку данных. ну пустые значения например и прочее.
 
 Top
Allegamex
Отправлено: 13 Мая, 2013 - 15:50:48
Post Id


Новичок


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


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




avtor.fox пишет:
Allegamex, ещё проще -
PHP:
скопировать код в буфер обмена
  1. $_SESSION['fname'] = $_POST['fname'];


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


Эт всё есть и обработка переменной с htmlspecialchars и проверки...просто массив как то подвернулся под конец работы.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB