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 и БД-Сессии - как реализовать конкретную задачу?

 PHP.SU

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


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

> Без описания
AlexNewaro
Отправлено: 24 Марта, 2015 - 11:58:28
Post Id



Новичок


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


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




Есть такое понятие как корзина.
Я под этим понимаю складирование информации о конкретном товаре, к которой потом можно вернуться и пакетно обработать.

А вот если единица "товара" - это набор выбранных пользователем параметров?

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

Если хочется дать ему возможность сформировать несколько наборов параметров, а потом единой заявкой все отправить - я так понимаю помогут сессии.
Так и реализовал - в сессию записывается первый набор параметров. После повторного выбора параметров, на сводной странице выводятся сразу два набора параметров. Сводная заявка, занавес. Все работает.

НО! Это справедливо на данном этапе моего понимания сессий только для формирования ДВУХ наборов.
А если человеку нужно сделать 5 заявок? Понятно, что после отправки двух заявок я дестрою сессию, он зашел еще раз на страницу выбора параметров, забил еще две - отправил. Потом еще одну.
А как реализовать механизм, чтобы человек мог создавать столько наборов параметров, сколько ему нужно, а потом все разом отправлять в заявке? То есть, по сути, как хранить в "корзине" неограниченное количество наборов?
 
 Top
Ch_chov
Отправлено: 24 Марта, 2015 - 12:52:55
Post Id



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


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




AlexNewaro пишет:
Понятно, что после отправки двух заявок я дестрою сессию

Зачем? В сессии могут быть другие полезные даныне. Например авторизация пользователя на сайте. Удаляйте из сессии конкретный набор данных.
 
 Top
AlexNewaro
Отправлено: 24 Марта, 2015 - 12:54:52
Post Id



Новичок


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


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




У меня нет на сайте таких данных, сессии нужны только для работы с этими заявками Улыбка

Ch_chov пишет:
AlexNewaro пишет:
Понятно, что после отправки двух заявок я дестрою сессию

Зачем? В сессии могут быть другие полезные даныне. Например авторизация пользователя на сайте. Удаляйте из сессии конкретный набор данных.
 
 Top
exlant
Отправлено: 24 Марта, 2015 - 13:57:57
Post Id



Посетитель


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


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




я так и не понял почему в сессии нельзя это все хранить??

ну и как вариант сделать свои сессии.. писать информацию в файл(ы) или базу, давать юзеру через куки какой то сгенерированный id, и по нему потом дергать инфу из файла(ов) или из базы, хотя по сути сессии так и реализованы, зачем тогда изобретать велосипед?
 
 Top
AlexNewaro
Отправлено: 24 Марта, 2015 - 14:10:10
Post Id



Новичок


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


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




дык я не против, просто квалификации не хватает сессии в базу писать ))
я понимаю так, что сессии нужно присвоить идентификатор типа случайного хэша.
записать в базу все данные, отобранные юзеров, за своим id и в качестве выборного параметра - хэшем.
а при открытии сводной страницы (корзины) - делать запрос по хэшу и выводить все данные к нему привязанные. так?

exlant пишет:
я так и не понял почему в сессии нельзя это все хранить??

ну и как вариант сделать свои сессии.. писать информацию в файл(ы) или базу, давать юзеру через куки какой то сгенерированный id, и по нему потом дергать инфу из файла(ов) или из базы, хотя по сути сессии так и реализованы, зачем тогда изобретать велосипед?

(Добавление)
Проверьте меня...
Я же могу сделать так?

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $sid = mt_rand();
  3. $_session['sid'] = $sid;
  4.  


В сессии у меня будет крутиться случайное число ['sid'].

Юзер выбрал набор параметров. Нажал что-то типа "сформировать еще одну заявку".
По клику все выбранные данные записались в базу под уникальным ID, одно из полей - `sid`. Ансет всех переменных, кроме ['sid'].

Юзер снова подбирает набор параметров. Снова нажимает "сформировать еще одну заявку".
По клику - еще одна запись в базу под уникальным ID и тем же `sid`. Ансет всех переменных, кроме ['sid'].

Открытие "корзины" - выборка из базы и обработка полученных данных через foreach.

(Отредактировано автором: 24 Марта, 2015 - 14:37:13)

 
 Top
exlant
Отправлено: 24 Марта, 2015 - 14:59:44
Post Id



Посетитель


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


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




вы так и не ответили почему не можете все эти параметры хранить непосредственно в сессиях??? зачем изобретать велосипед???
Цитата:

Проверьте меня...
Я же могу сделать так?

можете..
генерацию идентификатора, я бы сделал как то так
PHP:
скопировать код в буфер обмена
  1.  
  2. function generatestring($len=32){
  3.         $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789';
  4.         $str_len = strlen($str)-1;
  5.         $text = '';
  6.         while(strlen($text)<$len)
  7.             $text.=$str[mt_rand (0, $str_len)];
  8.        
  9.         return $text;
  10.     }
  11.  

по всему остальному! можно так сделать, но зачем? чем сессии не подходят?
а по записи сессии в бд или в файл, куча инфы в гугле!
там все можно сделать через session_set_save_handler()
 
 Top
AlexNewaro
Отправлено: 24 Марта, 2015 - 15:10:13
Post Id



Новичок


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


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




Да я бы рад, но как я буду хранить в сессиях одни и те же переменные, но с разными параметрами?

exlant пишет:
вы так и не ответили почему не можете все эти параметры хранить непосредственно в сессиях??? зачем изобретать велосипед???
Цитата:

Проверьте меня...
Я же могу сделать так?

можете..
генерацию идентификатора, я бы сделал как то так
PHP:
скопировать код в буфер обмена
  1.  
  2. function generatestring($len=32){
  3.         $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789';
  4.         $str_len = strlen($str)-1;
  5.         $text = '';
  6.         while(strlen($text)<$len)
  7.             $text.=$str[mt_rand (0, $str_len)];
  8.        
  9.         return $text;
  10.     }
  11.  

по всему остальному! можно так сделать, но зачем? чем сессии не подходят?
а по записи сессии в бд или в файл, куча инфы в гугле!
там все можно сделать через session_set_save_handler()
 
 Top
exlant
Отправлено: 24 Марта, 2015 - 15:12:45
Post Id



Посетитель


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


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




запихнуть параметры в массив! вы же из бд тоже массив будете получать!
(Добавление)
Ch_chov в самом начале привел же пример...

 
 Top
AlexNewaro
Отправлено: 24 Марта, 2015 - 15:17:39
Post Id



Новичок


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


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




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

exlant пишет:
запихнуть параметры в массив! вы же из бд тоже массив будете получать!
(Добавление)
Ch_chov в самом начале привел же пример...

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



Посетитель


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


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




тогда с начало разбирайтесь с массивами, а то без них никуда!

и еще раз вы из базы получите массив! Точно такой же массив вы можете хранить в сессиях! Зачем дергать БД, и писать лишний код? Разве что для тренировки и самообучения!
 
 Top
AlexNewaro
Отправлено: 24 Марта, 2015 - 15:25:39
Post Id



Новичок


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


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




Ну процесс работы с базой мне знаком, поэтому и кажется проще.

Запишу в базу по клику, при открытии сводной страницы сделаю запрос из базы...
Баран ведь идет туда, куда знает Ниндзя Огорчение

exlant пишет:
тогда с начало разбирайтесь с массивами, а то без них никуда!
и еще раз вы из базы получите массив! Точно такой же массив вы можете хранить в сессиях! Зачем дергать БД, и писать лишний код? Разве что для тренировки и самообучения!
 
 Top
exlant
Отправлено: 24 Марта, 2015 - 15:30:48
Post Id



Посетитель


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


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




Проблемы ну как знаете
 
 Top
AlexNewaro
Отправлено: 24 Марта, 2015 - 15:34:54
Post Id



Новичок


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


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




А вы, если несложно, мне любой отвлеченный пример с сессиями и массивами приведите, а то гугл меня сегодня не любит.

exlant пишет:
Проблемы ну как знаете
 
 Top
exlant
Отправлено: 24 Марта, 2015 - 15:53:12
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. for($key = 0; $key < 10; $key++){
  3.     $_SESSION['params'][$key]['first_param'] = "some param of first_param";
  4.     $_SESSION['params'][$key]['second_param'] = "some param of second_param";
  5.     $_SESSION['params'][$key]['third_param'] = "some param of third_param";
  6.     $_SESSION['params'][$key]['fourth_param'] = "some param of fourth_param";
  7.     $_SESSION['params'][$key]['fifth_param'] = "some param of fifth_param";
  8. }
  9. foreach($_SESSION['params'] as $value){
  10.     echo $value['first_param'],"<br>",
  11.     $value['second_param'],"<br>",
  12.     $value['third_param'],"<br>",
  13.     $value['fourth_param'],"<br>",
  14.     $value['fifth_param'],"<br><br>";
  15. }
  16. var_dump($_SESSION['params']);
  17.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB