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 :: joomla+virtuemart не корректно работает

 PHP.SU

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


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

> Описание: не все id передаются
electronik
Отправлено: 18 Октября, 2010 - 00:16:10
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2010  
Откуда: Minsk


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




Устроился на новую работу, у них есть сайт на joomla, с прикрученным магазином virtuemart, так вот , в шаблон товаров, было добавлено поле "id"(добавлял не я, поэтому не знаю как оно добавлялось, скорее всего через админку) в которое вписывается в ручную id товара, при заказе формируется файл и уходит на почту, этот файл потом загружается в 1С для контроля расходов. Проблема в том что не со всех товаров подхватывается этот id, хотя на всех товарах он проставлен и в базе MySQL он есть, не могу понять причину такого поведения, у всех групп и товаров стоят одинаковые параметры, иногда id не берутся со всей группы, иногда с каких-то определённых товаров из группы X.

Вопрос как отследить из-за чего с этих товаров не берутся id, в базе есть, в приходящем файле нет.
 
 Top
electronik
Отправлено: 19 Октября, 2010 - 00:26:39
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2010  
Откуда: Minsk


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




Подскажите может можно как-то отмониторить процесс формирования файла или запросы к БД.
 
 Top
electronik
Отправлено: 21 Октября, 2010 - 14:54:29
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2010  
Откуда: Minsk


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




Вот функция получения id, товар разделен, на половинные порции.
PHP:
скопировать код в буфер обмена
  1. while($dboi->next_record())
  2.         {
  3.             $productNumber++;
  4.             $xmlFile['tag']['menu'][$productNumber]['product_name'] = $dboi->f("product_name");
  5.             //$xmlFile['tag']['menu'][$productNumber]['id'] = $dboi->f("product_id");
  6.            
  7.             $q  = "SELECT * FROM #__{vm}_product_price WHERE product_id=".$dboi->f("product_id");
  8.             $db_price->query($q);
  9.             $db_price->next_record();
  10.             $quantity = $dboi->f("product_quantity");
  11.            
  12.             // Check the quantity
  13.             if( floor($quantity) == $quantity ){
  14.                 $xmlFile['tag']['menu'][$productNumber]['quantity'] = $quantity;
  15.                 $xmlFile['tag']['menu'][$productNumber]['price'] =
  16.                     $db_price->f("product_price")*$xmlFile['tag']['menu'][$productNumber]['quantity'];
  17.             } if( floor($quantity) + 0.5 == $quantity )
  18.                                 {
  19.                 //Adding integer part of the quantity
  20.                 if($quantity >= 1)
  21.                 {
  22.  
  23.                                         $xmlFile['tag']['menu'][$productNumber]['id'] = $db_price->f("pizza_id");
  24.                     $xmlFile['tag']['menu'][$productNumber]['quantity'] = floor($quantity);
  25.                     $xmlFile['tag']['menu'][$productNumber]['price'] =
  26.                         $db_price->f("product_price")*floor($xmlFile['tag']['menu'][$productNumber]['quantity']);
  27.                     $xmlFile['tag']['order_summ'] += $xmlFile['tag']['menu'][$productNumber]['price'];
  28.                     $productNumber++;
  29.                 } else
  30.                 //Adding 0.5 part of the quantity
  31.                 $xmlFile['tag']['menu'][$productNumber]['id'] = $db_price->f("pizza_id_half");
  32.                 $xmlFile['tag']['menu'][$productNumber]['product_name'] = $dboi->f("product_name");
  33.                 $xmlFile['tag']['menu'][$productNumber]['quantity'] = 0.5;
  34.                 $xmlFile['tag']['menu'][$productNumber]['price'] = $db_price->f("product_price_half");
  35.             } else {
  36.                 $xmlFile['tag']['menu'][$productNumber]['quantity'] = round($quantity);
  37.                 $xmlFile['tag']['menu'][$productNumber]['price'] =
  38.                     $db_price->f("product_price")*$xmlFile['tag']['menu'][$productNumber]['quantity'];
  39.             }
  40.              


я так понимаю что проблема в строке
PHP:
скопировать код в буфер обмена
  1. if( floor($quantity) + 0.5 == $quantity )


потому что при отладке, после неё он всё пропускает и перескакивает сразу на
PHP:
скопировать код в буфер обмена
  1. $xmlFile['tag']['menu'][$productNumber]['quantity'] = round($quantity);

(Добавление)
И обрабатывает почему-то только половинные порции.
 
 Top
OrmaJever Модератор
Отправлено: 21 Октября, 2010 - 15:24:20
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




а в чём логика этой строки?
electronik пишет:
PHP:
скопировать код в буфер обмена
  1. $quantity = $dboi->f("product_quantity");
  2. if( floor($quantity) + 0.5 == $quantity )

true будет только если $quantity будет числом 0.5, 1.5, 2.5 и т.д

и что за функция f() в класе?

(Отредактировано автором: 21 Октября, 2010 - 15:25:45)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
electronik
Отправлено: 21 Октября, 2010 - 15:49:44
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2010  
Откуда: Minsk


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




Разобрался.
тут начиналась обработка половинных заказов
PHP:
скопировать код в буфер обмена
  1. if( floor($quantity) + 0.5 == $quantity )  

так что перед ней нужно было просто вставить фун-цию получения "целого" кода, т.е правильно должно быть так
PHP:
скопировать код в буфер обмена
  1.  // Check the quantity
  2.             if( floor($quantity) == $quantity ){
  3.                 $xmlFile['tag']['menu'][$productNumber]['id'] = $db_price->f("pizza_id");
  4.                 $xmlFile['tag']['menu'][$productNumber]['quantity'] = $quantity;
  5.                 $xmlFile['tag']['menu'][$productNumber]['price'] =
  6.                     $db_price->f("product_price")*$xmlFile['tag']['menu'][$productNumber]['quantity'];
  7.  

Цитата:
и что за функция f() в класе?

это получение данных из MySQL.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB