Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача переменной-массива на другую страницу

2.0K
15 апреля 2003 года
Yana
32 / / 07.01.2003
1-я страница:
<select name="subject[]" multiple>

2-я страница:
$subject = $subject;

3-я страница:
foreach ($subject as $subj_id)
{
...............
}

Результат:
Invalid argument supplied for foreach() on line 26

Почему??? Где ошибка?
4
15 апреля 2003 года
mike
3.7K / / 01.10.2002
А каким образом $subject попадает со второй страницы не третью???
3.7K
15 апреля 2003 года
sl_play
5 / / 07.04.2003
Цитата:
Originally posted by Yana
1-я страница:
<select name="subject[]" multiple>

2-я страница:
$subject = $subject;

3-я страница:
foreach ($subject as $subj_id)
{
...............
}

Результат:
Invalid argument supplied for foreach() on line 26

Почему??? Где ошибка?



возможно в php.ini
register_globals =on
если эта опция не установлена, обращайся к переменным $HTTP_POST_VARS['']

2.0K
15 апреля 2003 года
Yana
32 / / 07.01.2003
Цитата:
Originally posted by sl_play
возможно в php.ini
register_globals =on
если эта опция не установлена, обращайся к переменным $HTTP_POST_VARS['']


Если бы было register_globals =on, то тогда бы вообще не понадобилось упоминание этой переменной на второй странице. А поскольку я не хотела рисковать, сделала так.

Хотя может я на неправильном пути.....

4
15 апреля 2003 года
mike
3.7K / / 01.10.2002
Давайте разберемся.

Когда вы запрашиваете страницу у сервера, он вызывает PHP, обрабатывающий вашу программу, и результат выполнения отправляется пользователю.

Три странички - три запуска - переменные не передаются никак.

Из первой страницы на вторую они передвются через строку запроса методом GET

Со второй страницы они НИКАК не попадают на третью странцу, именно по этому функция foreach ругается на передаваемый ей параметр - передается не заданная переменная, а должен быть массив.

Передавать переменные можно через сессии.
2.0K
15 апреля 2003 года
Yana
32 / / 07.01.2003
Цитата:
Originally posted by mike


Со второй страницы они НИКАК не попадают на третью странцу, именно по этому функция foreach ругается на передаваемый ей параметр - передается не заданная переменная, а должен быть массив.

Передавать переменные можно через сессии.


Ах, точно. Ведь первый раз эту переменную форма посылает. Я как-то упустила этот момент...

Как тогда проще поступить? Мне надо только один массив перенести с 1 страницы на 3-ю.

285
17 апреля 2003 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by Yana

Ах, точно. Ведь первый раз эту переменную форма посылает. Я как-то упустила этот момент...

Как тогда проще поступить? Мне надо только один массив перенести с 1 страницы на 3-ю.



Мне нравится предложения mike использовать сессии, я сам их часто использую... в этом случае отпадает необходимость каким-нибудь образом изголяться...

2.0K
17 апреля 2003 года
Yana
32 / / 07.01.2003
Ну можно что-нибудь поконкретнее, народ... Мне начальник голову открутит. :(
Я вот пыталась в мануале прочитать про $HTTP_POST_VARS, которые теперь стали $_POST. Но вот никак не могу понять в каком формате их записывать
285
17 апреля 2003 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by Yana
Ну можно что-нибудь поконкретнее, народ... Мне начальник голову открутит. :(
Я вот пыталась в мануале прочитать про $HTTP_POST_VARS, которые теперь стали $_POST. Но вот никак не могу понять в каком формате их записывать



Я использую обычно следующий нехитрый алгоритм(он не самый изящный, но работает):
Для начала вызываем функцию session_start();
Тебе её надо вызвать во втором и третьем файле, чтобы эти скрипты были включены в сессию.
Далее объявляю сессионные переменные session_register("Имя_переменной_без_символа_$");
Это опять же таки делается в твоём втором скрипте.
Далее творим с этой переменной, что судьба заблаговолит(присваеваем её значение). Т.е. сейчас мы берём из массива $HTTP_POST_VARS значение переданное первым скриптом второму и помещаем в сессию

Теперь пришла пора для третьего скрипта. В этом скрипте мы опять вызываем session_start(); Далее обращаемся к массиву сессионых переменных($HTTP_SESSION_VARS["var_name"]). Заметь, что при обращении к массивам имя переменной в массиве указывается без символа [$].
Пишим $arr=$HTTP_SESSION_VARS["sess_arr"];, но можно и $arr=$sess_arr;
После всего нужно выйти из сессии, это разумно сделать в третьем конечном скрипте. Вызываем session_destroy(); и идём пить чай... :)

На самом деле существует ещё возможность задавать имена сессиям, но мне пока лениво с этим разбираться...

В итоге всё выглядит следующим образом:
1-я страница:
<select name="subject[]" multiple>


// Это, так сказать, твоё.

2-я страница

 
Код:
session_start();
session_register("s_subject");
/* я считаю, что лучше задавать разные имена переменным POST и SESSION */
$s_subject=$HTTP_POST_VARS["subject"];
...............


3-я страница
Код:
session_start();
/*Можно стразу работать с $s_subject, а можно
присвоить её значение другой переменной, как Вам
больше нравиться, я буду сразу работать с $s_subject*/

foreach ($s_subject as $subj_id)
{
...............
}
...............
/*Теперь разрушаем(закрываем) сессию, на самом
деле переменные сессии храняться в файлах и через
определённое время сами уничтожаются, но не стоит
захламлять винт, лучше удалить их и быть
спокойным, как пообедавший кот*/

session_destroy();


Вот кажется и всё. Если что-то упустил, ну бывает :)

А с начальником нужно дружить :D
2.0K
21 апреля 2003 года
Yana
32 / / 07.01.2003
Всегда ты меня спасаешь, Ромик. Спасибо! А то я тут что-то сама нахимичила с сессиями...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог