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
Форумы портала PHP.SU :: Версия для печати :: PHP и БД-Сессии - как реализовать конкретную задачу?
Форумы портала PHP.SU » » HTTP и PHP » PHP и БД-Сессии - как реализовать конкретную задачу?

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

1. AlexNewaro - 24 Марта, 2015 - 11:58:28 - перейти к сообщению
Есть такое понятие как корзина.
Я под этим понимаю складирование информации о конкретном товаре, к которой потом можно вернуться и пакетно обработать.

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Открытие "корзины" - выборка из базы
CODE (text):
скопировать код в буфер обмена
  1. WHERE `sid` = $sid
и обработка полученных данных через foreach.
6. exlant - 24 Марта, 2015 - 14:59:44 - перейти к сообщению
вы так и не ответили почему не можете все эти параметры хранить непосредственно в сессиях??? зачем изобретать велосипед???
Цитата:

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

можете..
генерацию идентификатора, я бы сделал как то так
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()
7. AlexNewaro - 24 Марта, 2015 - 15:10:13 - перейти к сообщению
Да я бы рад, но как я буду хранить в сессиях одни и те же переменные, но с разными параметрами?

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()
8. exlant - 24 Марта, 2015 - 15:12:45 - перейти к сообщению
запихнуть параметры в массив! вы же из бд тоже массив будете получать!
(Добавление)
Ch_chov в самом начале привел же пример...

9. AlexNewaro - 24 Марта, 2015 - 15:17:39 - перейти к сообщению
У меня глобальный провал по части массивов.
Я ими пользуюсь, но досконально их не понимаю.
Поэтому пока сложно сообразить.

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

10. exlant - 24 Марта, 2015 - 15:22:27 - перейти к сообщению
тогда с начало разбирайтесь с массивами, а то без них никуда!

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

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

exlant пишет:
тогда с начало разбирайтесь с массивами, а то без них никуда!
и еще раз вы из базы получите массив! Точно такой же массив вы можете хранить в сессиях! Зачем дергать БД, и писать лишний код? Разве что для тренировки и самообучения!
12. exlant - 24 Марта, 2015 - 15:30:48 - перейти к сообщению
Проблемы ну как знаете
13. AlexNewaro - 24 Марта, 2015 - 15:34:54 - перейти к сообщению
А вы, если несложно, мне любой отвлеченный пример с сессиями и массивами приведите, а то гугл меня сегодня не любит.

exlant пишет:
Проблемы ну как знаете
14. exlant - 24 Марта, 2015 - 15:53:12 - перейти к сообщению
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.  

 

Powered by ExBB FM 1.0 RC1