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 :: Как передать массив через <form>

 PHP.SU

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


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

> Без описания
Xenox
Отправлено: 05 Марта, 2015 - 02:11:22
Post Id


Новичок


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


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




Здравствуйте!! Такой вопрос возник, можно ли передать массив через форму? Т.е. к примеру
переменную я передаю так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form action="" method="POST">
  2. <input type="hidden" value"<?php $var ?>">
  3. <input type="sumbit" value="OK">
  4. </form>
  5.  

А как на счет массива?? К примеру из 5ти элементов? Или прийдется создавать 5 инпутов типа hidden?? Заранее спасибо!
 
 Top
exlant
Отправлено: 05 Марта, 2015 - 02:24:16
Post Id



Посетитель


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


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




http://lmgtfy[dot]com/?q=%D0%9A%D0%B[dot][dot][dot]D0%B7+%3Cform%3E

а вообще можно еще склеить массив в строчку и передать!

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

(Отредактировано автором: 05 Марта, 2015 - 02:26:08)

 
 Top
Xenox
Отправлено: 05 Марта, 2015 - 02:33:43
Post Id


Новичок


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


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




В общем понял все такие придется создать несколько инпутов, все равно спасибо! и сорри что засоряю форум тривиальными вопросами( тему можно закрыть или удалить
 
 Top
imediasun
Отправлено: 05 Марта, 2015 - 08:47:20
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


вообще для того чтобы передать массив необходимо это осуществлять в самом контроллере, а если вам надо через форму то делайте так
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form>
  3. <?
  4. foreach($data as $key=>$val){
  5. ?>
  6. <input value="<?=$val?>">
  7. и т.д и т.п
  8. <?
  9. }
  10. ?>
  11. </form>
  12.  
 
 Top
Sail
Отправлено: 05 Марта, 2015 - 10:37:34
Post Id



Участник


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


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




Xenox пишет:
можно ли передать массив через форму?

Можно воспользоваться функциями serialize() и unserialize()
Для преобразования массива в строку (перед выводом в форму) и обратного преобразования строки, полученной через $_POST в массив.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Марта, 2015 - 10:55:54
Post Id



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


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


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




Sail пишет:
Можно воспользоваться функциями serialize() и unserialize()

Через клиента передавать - лучше не надо. Очень уж часто в реализации unserialize правят уязвимости. Уже в этом году пара ошибок закрыто, включая уязвимости.


-----
PostgreSQL DBA
 
 Top
exlant
Отправлено: 05 Марта, 2015 - 14:18:35
Post Id



Посетитель


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


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




А не лучше именно для передачи массива сессии использовать?
Мне даже идеи не приходят, где нужно использовать именно форму для передачи массива!
 
 Top
Xenox
Отправлено: 05 Марта, 2015 - 14:56:07
Post Id


Новичок


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


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




Всем спасибо за советы!! Воспользуюсь советом imediasun. А по поводу того зачем мне это нужно, цель: есть три страницы html, в 1 вводятся одни данные и передаються во вторую форму, во второй во второй вводятся еще данные, а первые записываются в массив, и передаються в 3 форму и записываются в бд... Я сначала хотел сделать все это на 1 странице, использовав ajax просто подменять дивы, но препод сказал мол "Ты в ajax ладу не дашь, а тебе еще нужно что бы все это работало в IE 8x+ так что делай 3 страницы и не парь мне мозги."
Может не оч понятно обьяснил, но как то так.

P.S. А по поводу сессий я их тоже не использую по совету препода, потому что денвер выдает ошибку что то типа headers alredy sent, ну я там читал что можно что то изменить в php.ini но пока не лез туда, решил сначала с этим разобраться.

(Отредактировано автором: 05 Марта, 2015 - 15:00:46)

 
 Top
exlant
Отправлено: 05 Марта, 2015 - 15:03:24
Post Id



Посетитель


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


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




Ну так, на 1ой странице ввели данные, перешли на вторую, там первые данные записали в сессию, на 2ой ввели еще данные, перешли на следующую страничку, там новые данные добавили в сессию, ввели еще данные, перешли на следующую там опять все в сессию, и т.д.
в конце берем все нужные данные из сессии, и записываем в базу! имхо так логичней!
(Добавление)
а ваш препод не может объяснить что означат ошибка headers alredy sent?
сессию нужно стартовать в самом начале файла, там не должно быть ни единого символа, включая пробелы!
 
 Top
Xenox
Отправлено: 05 Марта, 2015 - 15:23:42
Post Id


Новичок


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


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




Т.е. я к примеру на второй странице использую такой код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. session start()
  4.  
  5. $_SESSION['a'] = $_POST['a'];
  6. $_SESSION['b'] = $_POST['b'];
  7. $_SESSION['c'] = $_POST['c'];
  8.  
  9. ?>
  10. <form>
  11. какие то инпуты
  12. </form>
  13.  
  14.  
  15.  


а в третьей странице тогда точно так же вывожу?
к примеру
PHP:
скопировать код в буфер обмена
  1.  
  2. session start()
  3. $query = mysqli_query("INSERT INTO data (a, b, c) VALUES ('{$_SESSION['a'] }',"{$_SESSION['b']}','{$_SESSION['c']')");
  4. session_destroy();
  5.  

(Отредактировано автором: 05 Марта, 2015 - 15:25:14)

 
 Top
exlant
Отправлено: 05 Марта, 2015 - 15:33:38
Post Id



Посетитель


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


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




да, только строчка "<?php" должна начинаться обязательно с первой строчки файла! Без всяких пробелов
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP // то есть вот так уже будет ошибка
  3.  

если хоть один любой символ будет выведет в браузер перед стартом сессии, то будет ошибка headers alredy sent!

Разве что можно еще включить буферизацию.
 
 Top
Xenox
Отправлено: 05 Марта, 2015 - 15:48:10
Post Id


Новичок


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


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




[quote=exlant]
если хоть один любой символ будет выведет в браузер перед стартом сессии, то будет ошибка headers alredy sent!
/quote]

Т.е. к примеру если бы у меня был какой то html код перед открывающим тегом php сессии бы не работали?
(Хм глупый вопрос)

Нее это не мой код, это я так на работе быстро написал для примера,
вечером попробую убрать все лишнее перед <?php

Спасибо за подсказку!

P.S. препод сказал что на нормальном сервере все будет ок, типа это косяки денвера

(Отредактировано автором: 05 Марта, 2015 - 15:49:39)

 
 Top
exlant
Отправлено: 05 Марта, 2015 - 15:55:49
Post Id



Посетитель


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


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




Xenox пишет:

Т.е. к примеру если бы у меня был какой то html код перед открывающим тегом php сессии бы не работали?

именно

Цитата:
P.S. препод сказал что на нормальном сервере все будет ок, типа это косяки денвера

не повезло вам с преподом... денвер тут не причем

еще может быть эта ошибка из за bom символа в UTF-8
 
 Top
Xenox
Отправлено: 05 Марта, 2015 - 16:07:40
Post Id


Новичок


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


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




Т.е. как вариант можно попробовать в notepad преобразовать в "UTF8 без bom". Спасибо! Буду пробовать
 
 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