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]   

> Без описания
teddy
Отправлено: 27 Апреля, 2013 - 13:13:28
Post Id


Участник


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


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




Здравствуйте, помогите пожалуйста разобраться в сессиях, сейчас опишу в чем именно заключается моя проблема. Прочитал статью на PHP.SU на тему Сессии и посмотрел несколько видеоуроков но так и не понял в чем моя проблема.

Практикуюсь в использовании сессий и решил для пробы взять себе за пример разработку банальных пошаговых тестов. Тоесть имеется 3 странички на каждой есть вопрос, ответы на который содержат чекбоксы или радиокнопки и кнопка "Дальше". Т.е нажав эту кнопку мы переходим на другую страничку и отвечаем на следующие вопросы...

Нужно сделать так, что бы сразу после ответа данные не отсылались сразу в БД, а записывались в сессию в зависимости от выбранного ответа. А на итоговой страничке выводились в бразуре для наглядности выбранные ответы и отправлялись в БД... Я делал так(пример одной из страничек):

PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['submit'])){
  2.  
  3. $firma = $_POST['firma'];
  4. $cafe = $_POST['cafe'];
  5. $club = $_POST['club'];
  6.  
  7. if(isset($_POST['firma'])){$_SESSION['firma']=$firma;}
  8. if(isset($_POST['cafe'])){$_SESSION['cafe']=$cafe;}
  9. if(isset($_POST['club'])){$_SESSION['club']=$club;}
  10.  
  11. }
  12.  
  13. <pre>
  14.  
  15. Выберите одно из...:
  16.  
  17. <form action='end.php' method='post'>
  18.  
  19. <input type='checkbox' name='firma' value='FIRMA'>Фирма
  20. <input type='checkbox' name='cafe' value='CAFE'>Кафе
  21. <input type='checkbox' name='club' value='CLUB'>Клуб
  22.  
  23. <input type='submit' name='submit' value='Завершить тест'>
  24.  
  25. </pre>


По идее при выборе того или иного варианта они должны записываться в сессию которая будет доступна из всех файлов и где я смогу сделать что мне нужно(вывести либо отправить в БД) session_start(); прописал во всех файлах.

Но ничего не выходит. На экран выводится только если на каждой страничке вывести так: echo $_SESSION['cafe']; Тогда мне в браузер выведется его value. Значит все записывается? Но почему я не имею доступ к этим сессиям на последней страничке?

Очень надо, помогите, пожалуйста... а то сижу и туплю со вчерашнего дня
(Добавление)
В последнем файле проверяю на isset и вывожу но ничего не выводится...
PHP:
скопировать код в буфер обмена
  1. if(isset($_SESSION['firma'])){echo $_SESSION['firma'];}

(Добавление)
Умные дяди, где вы? Голливудская улыбка

(Отредактировано автором: 27 Апреля, 2013 - 13:18:01)

 
 Top
Мелкий Супермодератор
Отправлено: 27 Апреля, 2013 - 14:29:19
Post Id



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


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


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




Дурацкое предположение - может вы форму пытаетесь обрабатывать не там?
Т.е. на страничке 1 есть обработчик формы с этот страницы, но в action формы указана сразу вторая страница - следовательно, переход на следующую страницу есть, но данные-то в обработчик на прошлой странице не попали.

Воткните var_dump($_SERVER);, увидите всё, что записалось в сессию.


-----
PostgreSQL DBA
 
 Top
DelphinPRO
Отправлено: 27 Апреля, 2013 - 14:30:24
Post Id



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


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


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




в каждой форме передаете номер страницы
CODE (html):
скопировать код в буфер обмена
  1. <input type="hidden" name="page" value=2>

в скрипте ловите
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['page'])) {
  2.   $_SSESSION['page'] = $_POST['page'];
  3.   // дальше сохраняем в сессии все данные из формы и показываем следующую
  4. }
  5.  

если форма последняя - сейвим в базу.
Параллельно данные можно хранить в LocalStorage чтобы пользователь мог продолжить заполнение анкеты с сместа остановки.

В общем примитивнейшая задача, не вижу никаких трудностей, как и остальные. Поэтому, и лень отвечать Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 27 Апреля, 2013 - 14:38:21
Post Id


Участник


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


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




Мелкий
DelphinPRO
Спасибо вам, буду пробовать )

А по поводу примитивности задачи - я это понимаю Улыбка Знаю что в целом это легко, но так как вникать в сессии начал только сейчас, не все понимаю, но исходя из примеров понятное дело что это не так уж и сложно, как например регулярные выражения )
 
 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