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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Не обнавляется кол-во товара в корзине
bboyb-rock
Отправлено: 08 Апреля, 2011 - 16:26:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




Здраствуйте всем! Может кто поможет или подскажет.
Переделываю чуть корзину, вот такая проблема при обновлении обнавляются все товары с одинаковым id не зависимо какой у него размер,
т.е если id=1 а размер=M и id=1 а размер=XL при изменении кол-ва первому и второму товара присваевается одно и тоже значение.
Как сделать чтобы обнавлялось как товар в целом (размер с id)
вот скрипт
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST["update"]))
  2. {
  3.    foreach ($_POST as $keys => $val)
  4.       if (strstr($keys, "count_"))
  5.       {
  6.       if ($val > 0)
  7.          {
  8.           for ($i=0; $i<count($_SESSION["gids"]); $i++)
  9.               {
  10.               if ($_SESSION["gids"][$i]["id"] == str_replace("count_","",$keys))
  11.                  {
  12. $_SESSION["counts"][$i] = floor($val);
  13.                   }
  14.                }
  15.           }
  16. else
  17.    {
  18.     $i=0;
  19.     while ($_SESSION["gids"][$i]["id"] != str_replace("count_","",$keys) && $i<count($_SESSION["gids"])) $i++;
  20.    $_SESSION["gids"][$i]["id"] = 0;
  21.    }
  22.    }
  23. }

$_SESSION["gids"] выглядит так
PHP:
скопировать код в буфер обмена
  1. $_SESSION["gids"][] = array("id"=>$_GET["add2cart"], "prod_size"=>$_GET["prod_size"]);

$_SESSION["counts"] так
 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 17:29:06
Post Id



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


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


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




1) код страшный
2) как вы указываете скрипту, что изменяется именно товар M размера, например?


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 17:32:09
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




Вот как бы Вы и правы я это и хотел бы узнать как это доделать я хотел типа условия такого сделать
PHP:
скопировать код в буфер обмена
  1. if ($_SESSION["gids"][$i]["id"] == str_replace("count_","",$keys) && $_SESSION["gids"][$i]["prod_size"] == str_replace("count_","",$keys))

только так не получается(( Вот прощу помощи
 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 17:35:15
Post Id



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


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


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




если не перелопачивать все основательно, то можно передать размер так: count_m_123, где 123 - id товара


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 17:39:59
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




а Вы бы кодом не могли подсказать?
 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 17:47:05
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. if (isset($_POST["update"])) {
  2.     foreach ($_POST as $key => $count) {
  3.  
  4.         if (strstr($key, "count_")) {
  5.  
  6.             $size = preg_replace('#^count_(\w+)_\d+#', '$1', $key);
  7.             $gid  = preg_replace('#^\D+#', '', $key); // goods id
  8.            
  9.             foreach ($_SESSION['gids'] as $gkey => $goods) {
  10.                 if ($goods['id'] == $gid && $goods['prod_size'] == $size) {
  11.                     if ($count > 0)
  12.                         $_SESSION['counts'][$gkey] = floor($val);
  13.                     else
  14.                         $_SESSION['gids'][$gkey] = 0;
  15.                 }
  16.             }
  17.  
  18.         }
  19.  
  20.     }
  21. }


Вот примерно так, но код не проверял.


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 17:47:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




зачем его передавать если он в сессии записан id размер, а со страницы передается только кол-во
(Добавление)
Проверил так не работает(((
 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 17:53:55
Post Id



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


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


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




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


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 18:02:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




да вы правы но ведь в сессию они так записываются
PHP:
скопировать код в буфер обмена
  1. $_SESSION["gids"][] = array("id"=>$_GET["add2cart"], "prod_size"=>$_GET["prod_size"]);

(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.  [0] => Array
  3.   (
  4.    [id] => 11
  5.    [prod_size] => XL
  6.   )
  7.  
  8.  [1] => Array
  9.   (
  10.   [id] => 11
  11.   [prod_size] => 2XL
  12.   )
  13.  
  14. )

Я хотел спроситьпо этому индексу [0] [1]
(
[0] => Array
(
нельзя кол-во присваивать?

(Отредактировано автором: 08 Апреля, 2011 - 18:16:33)

 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 18:25:27
Post Id



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


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


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




Тогда вам в POST запросе нужно передавать не id, а нужный вам индекс.


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 18:40:59
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




В Post запросе не передается id а передается кол-во. Например
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.  [0] => 2
  4.  
  5.  [1] => 5
  6.  
  7. )

(Отредактировано автором: 08 Апреля, 2011 - 18:41:57)

 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 18:46:51
Post Id



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


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


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




а что тогда 'count_ ' делает в коде?!?
bboyb-rock пишет:
PHP:
скопировать код в буфер обмена
  1.  foreach ($_POST as $keys => $val)
  2.       if (strstr($keys, "count_"))


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 18:49:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




Это имя input в котором написано кол-во.
 
 Top
movEAX
Отправлено: 08 Апреля, 2011 - 18:52:31
Post Id



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


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


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




Двигаемся дальше,
Это для чего?


-----
армия.. самое убогое место
 
 Top
bboyb-rock
Отправлено: 08 Апреля, 2011 - 18:56:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Янв. 2011  
Откуда: Артемовск Украина Донецкая область


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




в массиве который передается в POST присваивает значение кол-ва к нужному индексу(может не правильно выразился)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB