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]   

> Без описания
imediasun
Отправлено: 06 Сентября, 2013 - 15:43:02
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


Здравствуйте сессионный массив имеет вид
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Array ( [total_item] => 4
  3.              [cart] => Array (
  4.                           [0] => Array ( [id] =>1123 Array (
  5.                                      [photo] => DSC_0466_1206_677.JPG
  6.                                      [name] => Плащ S.Oliver чол [price] => 677 )
  7.  

Как удалить из сессии строку вложенного массива cart со смещением, в которой id и photo равны соответственно переменным
PHP:
скопировать код в буфер обмена
  1.  
  2. $id=1123;
  3. $photo=DSC_0466_1206_677.JPG;
  4.  

Помогите пожалуйста, спасибо

(Отредактировано автором: 06 Сентября, 2013 - 15:49:34)

 
 Top
DelphinPRO
Отправлено: 06 Сентября, 2013 - 15:46:23
Post Id



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


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


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




а нормальное представление массива, с форматированием и отступами слабо показать???
(Добавление)
Я вот попытался отформатировать, но там скобок не хватает, поэтому - ХЗ
CODE (text):
скопировать код в буфер обмена
  1. Array (
  2.     [total_item] => 4
  3.     [cart] => Array (
  4.         [0] => Array (
  5.             [id] =>1123
  6.             Array (
  7.                [photo] => DSC_0466_1206_677.JPG
  8.                [name] => Плащ S.Oliver чол
  9.                [price] => 677
  10.             )

(Добавление)
но могу попробовать подсказать

Заносите товары в корзину с ключом равным ID товара

PHP:
скопировать код в буфер обмена
  1.     [total_item] => 4
  2.     [cart] => Array (
  3.         [1123] =>Array (
  4.             [photo] => DSC_0466_1206_677.JPG
  5.             [name] => Плащ S.Oliver чол
  6.             [price] => 677
  7.         )


Тогда все просто:

PHP:
скопировать код в буфер обмена
  1. $id = 1123;
  2. unset($_SESSION['cart'][$id]);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imediasun
Отправлено: 06 Сентября, 2013 - 15:51:31
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


Надо чтобы еще и фотка совпадала , фотки могут быть разные, там расцветка.
В корзине могут быть два товара с одинаковым айдишником но с разными фотками

(Отредактировано автором: 06 Сентября, 2013 - 15:54:25)

 
 Top
DelphinPRO
Отправлено: 06 Сентября, 2013 - 15:56:00
Post Id



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


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


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




Ну тогда такой формат корзины

PHP:
скопировать код в буфер обмена
  1.     [total_item] => 4
  2.     [cart] => Array (
  3.         [1123] =>Array (
  4.             [DSC_0466_1206_677.JPG] => array (
  5.                 [photo] => DSC_0466_1206_677.JPG
  6.                 [name] => Плащ S.Oliver чол
  7.                 [price] => 677
  8.             )
  9.             [DSC_0466_6547_677.JPG] => array (
  10.                 [photo] => DSC_0466_6547_677.JPG
  11.                 [name] => Плащ S.Oliver чол
  12.                 [price] => 677
  13.             )
  14.         )


PHP:
скопировать код в буфер обмена
  1. $id = 1123;
  2. $photo = 'DSC_0466_1206_677.JPG';
  3. unset($_SESSION['cart'][$id][$photo]);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imediasun
Отправлено: 06 Сентября, 2013 - 16:05:33
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


А все таки с таким форматом корзины как удалить эту определенную запись, не хочу переделывать весь код корзины, все уже работает
PHP:
скопировать код в буфер обмена
  1.  
  2. Array ( [total_item] => 1
  3.             [cart] => Array (
  4.                   [0] => Array (
  5.                       [id] => 8745
  6.                       [photo] => DSC_0466_1206_677.JPG
  7.                       [name] => Плащ S.Oliver чол
  8.                       [price] => 677 ) ) )
  9.  

(Отредактировано автором: 06 Сентября, 2013 - 16:07:21)

 
 Top
DelphinPRO
Отправлено: 06 Сентября, 2013 - 16:16:23
Post Id



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


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


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




Раньше надо было думать. Приложение сначала проектируется, потом пишется.

Ну а тебе остается только циклом пробегаться по массиву cart, сравнивать значения и удалять, если подходит.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imediasun
Отправлено: 06 Сентября, 2013 - 16:18:01
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


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

(Отредактировано автором: 06 Сентября, 2013 - 16:18:34)

 
 Top
DelphinPRO
Отправлено: 06 Сентября, 2013 - 17:33:55
Post Id



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


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


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




выход из цикла - break


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imediasun
Отправлено: 07 Сентября, 2013 - 15:01:40
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


Написал так
PHP:
скопировать код в буфер обмена
  1.  
  2. public function del_cart(){
  3.         session_start();
  4.         $id=$this->input->get('good', TRUE);
  5.         $photo=$this->input->get('photo', TRUE);
  6.         foreach ($_SESSION['cart'] as $key=>$value){
  7.         if($_SESSION['cart'][$key]['photo']==$photo
  8.         and $_SESSION['cart'][$key]['id']==$id
  9.         ){
  10.         unset($_SESSION['cart'][$key]);
  11.         break;
  12.         }
  13.         }
  14.         header ('Location:http://size.in.ua/site/pages/cart');
  15.         }
  16.  

Проблема заключается в том что допустим удалил ключ [1] и при добавлении в корзину у меня подсчитываются ключи с помощью функции count, а после удаления ключа [1] ключи не смещаются, как удалить ключ со смещением например если это ключ [1] то запись удаляется но ключ [1] тепер принадлежит записи которая раньше была под ключем [2]. То есть массив до удаления выглядел так
PHP:
скопировать код в буфер обмена
  1.  
  2. Array ( [total_item] => 3
  3.            [cart] => Array (
  4.                   [0] => Array ( [id] => 8745
  5.                                         [photo] => DSC_0466_1206_677.JPG
  6.                                         [name] => Плащ S.Oliver чол
  7.                                         [price] => 677 )
  8.                    [1] => Array ( [id] => 8745
  9.                                          [photo] => DSC_0467_1206_677.JPG
  10.                                          [name] => Плащ S.Oliver чол
  11.                                          [price] => 677 )
  12.                    [2] => Array ( [id] => 8745
  13.                                          [photo] => DSC_0466_1206_677.JPG
  14.                                          [name] => Плащ S.Oliver чол
  15.                                          [price] => 677 )
  16.                    [3] => Array ( [id] => 8745
  17.                                          [photo] => DSC_0467_1206_677.JPG
  18.                                          [name] => Плащ S.Oliver чол
  19.                                          [price] => 677 ) ) )
  20.  

После удаления уже выглядит так
PHP:
скопировать код в буфер обмена
  1.  
  2. Array ( [total_item] => 3
  3.            [cart] => Array (
  4.                   [0] => Array ( [id] => 8745
  5.                                         [photo] => DSC_0466_1206_677.JPG
  6.                                         [name] => Плащ S.Oliver чол
  7.                                         [price] => 677 )
  8.                   [2] => Array ( [id] => 8745
  9.                                          [photo] => DSC_0466_1206_677.JPG
  10.                                          [name] => Плащ S.Oliver чол
  11.                                          [price] => 677 )
  12.                    [3] => Array ( [id] => 8745
  13.                                          [photo] => DSC_0467_1206_677.JPG
  14.                                          [name] => Плащ S.Oliver чол
  15.                                          [price] => 677 ) ) )
  16.  

Как сделать чтобы по удалении массив выглядел так
PHP:
скопировать код в буфер обмена
  1.  
  2. Array ( [total_item] => 3
  3.            [cart] => Array (
  4.                   [0] => Array ( [id] => 8745
  5.                                         [photo] => DSC_0466_1206_677.JPG
  6.                                         [name] => Плащ S.Oliver чол
  7.                                         [price] => 677 )
  8.                   [1] => Array ( [id] => 8745
  9.                                          [photo] => DSC_0466_1206_677.JPG
  10.                                          [name] => Плащ S.Oliver чол
  11.                                          [price] => 677 )
  12.                    [2] => Array ( [id] => 8745
  13.                                          [photo] => DSC_0467_1206_677.JPG
  14.                                          [name] => Плащ S.Oliver чол
  15.                                          [price] => 677 ) ) )
  16.  
 
 Top
LIME
Отправлено: 07 Сентября, 2013 - 15:14:13
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




http://www.php.net/manual/ru/fun...array-splice.php
(Добавление)
но вообще-то ф-ции count ключи глубоко феолетовы
она кол-во считает
 
 Top
imediasun
Отправлено: 07 Сентября, 2013 - 15:38:27
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


Просто добавляются в корзину так значения
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_SESSION['cart'])){
  3.         $id_cart=count($_SESSION['cart']);
  4.         if ($id_cart==0){
  5.         $_SESSION['cart'][0]['id']=$id;
  6.         $_SESSION['cart'][0]['photo']=$photo;
  7.         $_SESSION['cart'][0]['name']=$name;
  8.         $_SESSION['cart'][0]['price']=$price;
  9.         }
  10.         else{
  11.         $id_cart;
  12.         $_SESSION['cart'][$id_cart]['id']=$id;
  13.         $_SESSION['cart'][$id_cart]['photo']=$photo;
  14.         $_SESSION['cart'][$id_cart]['name']=$name;
  15.         $_SESSION['cart'][$id_cart]['price']=$price;
  16.         }
  17.         }
  18.  

Не могу разобраться с array_splice? Как быть в моем случае

(Отредактировано автором: 07 Сентября, 2013 - 15:39:11)

 
 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