Передача переменной-массива на другую страницу
<select name="subject[]" multiple>
2-я страница:
$subject = $subject;
3-я страница:
foreach ($subject as $subj_id)
{
...............
}
Результат:
Invalid argument supplied for foreach() on line 26
Почему??? Где ошибка?
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['']
возможно в php.ini
register_globals =on
если эта опция не установлена, обращайся к переменным $HTTP_POST_VARS['']
Если бы было register_globals =on, то тогда бы вообще не понадобилось упоминание этой переменной на второй странице. А поскольку я не хотела рисковать, сделала так.
Хотя может я на неправильном пути.....
Когда вы запрашиваете страницу у сервера, он вызывает PHP, обрабатывающий вашу программу, и результат выполнения отправляется пользователю.
Три странички - три запуска - переменные не передаются никак.
Из первой страницы на вторую они передвются через строку запроса методом GET
Со второй страницы они НИКАК не попадают на третью странцу, именно по этому функция foreach ругается на передаваемый ей параметр - передается не заданная переменная, а должен быть массив.
Передавать переменные можно через сессии.
Со второй страницы они НИКАК не попадают на третью странцу, именно по этому функция foreach ругается на передаваемый ей параметр - передается не заданная переменная, а должен быть массив.
Передавать переменные можно через сессии.
Ах, точно. Ведь первый раз эту переменную форма посылает. Я как-то упустила этот момент...
Как тогда проще поступить? Мне надо только один массив перенести с 1 страницы на 3-ю.
Ах, точно. Ведь первый раз эту переменную форма посылает. Я как-то упустила этот момент...
Как тогда проще поступить? Мне надо только один массив перенести с 1 страницы на 3-ю.
Мне нравится предложения mike использовать сессии, я сам их часто использую... в этом случае отпадает необходимость каким-нибудь образом изголяться...
Я вот пыталась в мануале прочитать про $HTTP_POST_VARS, которые теперь стали $_POST. Но вот никак не могу понять в каком формате их записывать
Ну можно что-нибудь поконкретнее, народ... Мне начальник голову открутит. :(
Я вот пыталась в мануале прочитать про $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_register("s_subject");
/* я считаю, что лучше задавать разные имена переменным POST и SESSION */
$s_subject=$HTTP_POST_VARS["subject"];
...............
3-я страница
/*Можно стразу работать с $s_subject, а можно
присвоить её значение другой переменной, как Вам
больше нравиться, я буду сразу работать с $s_subject*/
foreach ($s_subject as $subj_id)
{
...............
}
...............
/*Теперь разрушаем(закрываем) сессию, на самом
деле переменные сессии храняться в файлах и через
определённое время сами уничтожаются, но не стоит
захламлять винт, лучше удалить их и быть
спокойным, как пообедавший кот*/
session_destroy();
Вот кажется и всё. Если что-то упустил, ну бывает :)
А с начальником нужно дружить :D