Помощник
|
Курс в shop-script |
Гость_0_* Гость_0_* |
11.3.2009, 11:48;
Ответить: Гость_0_*
Сообщение
#12
|
|
ZiTosS,
Я пыталась модифицировать вот эту функцию: function ShowPriceInTheUnit( $price, $currencyID ) { $q_currency = db_query( "select currency_value, where2show, code from ". CURRENCY_TYPES_TABLE." where CID=$currencyID"); $currency = db_fetch_row( $q_currency ); $price = round(( 100*$price*$multiplier*$currency["currency_value"])/$divizor)/100; if (round($price*10) == $price*10 && round($price)!=$price) $price = "$price"."0"; //to avoid prices like 17.5 - write 17.50 instead return $currency["where2show"] ? $price.$currency["code"] : $currency["code"].$price; } фактически вводя кросс-курс ("множителем" и "делителем"), причем для каждого товара индивидуально - поскольку цены на разные группы фиксируются в разной валюте, да еще у некоторых привязка к курсам, которые отличаются от курса в нашем магазине - короче, проще и логичнее оказалось запихать эти два параметра в дополнительные поля таблицы PRODUCTS_TABLE (ss_products). Дальше я попыталась вставить внутрь функции, которую привожу, такой запрос: $q_divizor = db_query( "select divizor ". PRODUCTS_TABLE." where productID=$productID"); (и аналогично для "множителя" multiplier) Так их система не видит. Попыталась "втянуть" эти параметры в функцию, где идет первое обращение к ЦЕНЕ и есть возможность добиться выбора цены и соответствующих коэффициентов из ОДНОЙ строки (привязка к [$i]: function _formatPrice($price) { $price = (string)$price; [b]$divizor = (string)$divizor; $multiplier = (string)$multiplier;[/b] if ( !strstr($price,".") ) $price .= ".00"; $oldPrice = $price; $res = ""; $i = 0; for( $i=strlen($price)-1; $i>=0; $i-- ) { if ( $price[$i] == "." ) break; else $res = (1/$divizor[$i])*$multiplier[$i] * $price[$i].$res; } $res = ".".$res; $i--; $digitCounter = 0; for(; $i>=0; $i-- ) { $digitCounter++; $res = (1/$divizor[$i])*$multiplier[$i] * $price[$i].$res; if ( $digitCounter == 3 && $i != 0 ) { $res = ",".$res; $digitCounter = 0; } } return $res; } Все равно не работает. Возможно, я его как-то не так "втягиваю" (может, этот string в параметрах лишний) Со "смарти" пробовала, но даже не буду приводить, т.к. все равно не вышло. И система ругается, что задан массив из несуществующей переменной. |
|
|
ZiTosS |
11.3.2009, 17:47;
Ответить: ZiTosS
Сообщение
#13
|
|
У вас много где может быть ошибка.
1) PRODUCTS_TABLE - это константа по вашему, она точно определена? Возможно вы просто хотели таким образом обратиться к таблице с данным именем, тогда надо так. $q_divizor = db_query( "select divizor FROM PRODUCTS_TABLE where productID=$productID"); Так же вы забыли в SQL запросе FROM 2) про функцию _formatPrice($price) Вы передаёте в неё всего один параметр $price, остальные два $divizor и $multiplier не определены, они же у вас в скрипте не глобальные. Так же не увидел где вы обрабатываете свой запрос $q_divizor |
|
|
Гость_0_* Гость_0_* |
11.3.2009, 18:42;
Ответить: Гость_0_*
Сообщение
#14
|
|
1) FROM в цитате забыла, в запросе не забыла. Синтаксис запроса использовала такой же, как и для "взятия" валюты.
О _formatPrice($price) Добавила туда аргументы... Система их НЕ ВИДИТ. А я не вижу, где $price становится глобальной переменной. И почему она, из той же таблицы, не объявленная нигде глобальной - распознается скриптом, а эти нововведенные делитель с множителем - не распознаются. Уже вроде и в product_functions.php везде подобавляла, толку ноль. На этой почве я вчера попыталась модифицировать таблицу так, чтобы вводить цену в разных валютах в какой-то отдельный столбец, а Price подсчитывался скриптом как ВведеннаяЦена*Множитель/Делитель и обновлялась с изменением одного или нескольких из трех составляющих. В итоге поломала всё вообще, буду наверно по новой живую базу бэкапить, на локалку заносить и мучить ее дальше. Так хоть бы еще знать, в каком направлении. Но за комментарии и рекомендации по-любому спасибо. |
|
|
ZiTosS |
12.3.2009, 11:15;
Ответить: ZiTosS
Сообщение
#15
|
|
Oxanita, вам надо не только в определение функции вписать имена переменных, но и при вызове.
Выложите в аттаче файлы, в которых определяется и вызывается функция formatPrice, просто вы приводите мне не весь код, я вам так ответить не смогу |
|
|
Гость_0_* Гость_0_* |
12.3.2009, 13:18;
Ответить: Гость_0_*
Сообщение
#16
|
|
Выкладываю. Предупреждаю сразу: не пугаться (те, которые "олд" - по идее, неизменные от шоп-скрипта, а с "нормальными" именами - версии, в которых я покопалась)!
Если вписываю при вызове - скрипт пишет, что не хватает перемнных и указывает их номера (ну например, если я написала ShowPrice($price, $divizor, $multiplier, $currency) - я сейчас не останавливаюсь на точном названии переменных, а только ПРИМЕР привожу, так вот: скрипт "не видит" нововведенные divizor & multiplier, а все "родные" переменные видит. И я не знаю, что ему еще надо, т.к. в админ-части я уже смогла настроить ввод этих самых нвоых параметров, правда - пока только там, где выводится вся категория, но принципиально то, что новую переменную внедрить само по себе не проблема. И даже вывести в админке "для проверки" вот такое вот {$Price*$multiplier/$divizor} - не проблема: все видит, считает и выводит. Короче, скорее всего - придется мне сейчас заводить заново и базу с "живого" сайта, и все файлы движка, потмоу что в результате этих попыток на локалке уже всё вдребезги порвало - легче прибить, чем починить. А все остальные идеи насчет "мультивалютности" все равно включают в себя и введени новой переменной, и обращение к таблице "продуктов", то есть от текущей проблемы я этим не решу, а решение будет более закрученным и менее универсальным.
Прикрепленные файлы
product_functions_old.php ( 37,9 килобайт )
Кол-во скачиваний: 97
product_functions.php ( 39,24 килобайт ) Кол-во скачиваний: 90 functions_old.php ( 29,42 килобайт ) Кол-во скачиваний: 101 functions.php ( 30,32 килобайт ) Кол-во скачиваний: 94 |
|
|
ZiTosS |
17.3.2009, 13:38;
Ответить: ZiTosS
Сообщение
#17
|
|
|
Oxanita, я так понял _formatPrice это ваша функция, определённая вами. она цену преобразует из 1000000.95 в 1,000,000.95
И это уже строка. Я примерно представил что у вас за проблема. Вы мне только скажите, откуда у вас $divizor и $multiplier так понял, что в таблице PRODUCTS_TABLE есть 2 поля divizor и multiplier. так или нет? Если да, то вот вам код функции ShowPriceInTheUnit function ShowPriceInTheUnit( $price, $currencyID ) { $q_currency = db_query( "select currency_value, where2show, code from ". CURRENCY_TYPES_TABLE." where CID=$currencyID"); $currency = db_fetch_row( $q_currency ); $q_product = db_query( "select divizor, multiplier FROM ".PRODUCTS_TABLE." where productID=$productID"); $product = db_fetch_row( $q_product ); $price = round(( 100*$price*$product["multiplier"]*$currency["currency_value"])/$product["divizor"])/100; if (round($price*10) == $price*10 && round($price)!=$price) $price = "$price"."0"; //to avoid prices like 17.5 - write 17.50 instead return $currency["where2show"] ? $price.$currency["code"] : $currency["code"].$price; } И так же прошу сказать. У вас точно есть таблица с именем PRODUCTS_TABLE или это константа, определяемая скриптом? Просто я смотрю на другой запрос, там CURRENCY_TYPES_TABLE это константа. Вы пишите "select ... FROM PRODUCTS_TABLE where productID=$productID" А таблицы с именем PRODUCTS_TABLE у вас наверное и нету, это же константа, поэтому её надо вставлять вне строки, то есть через оператор соединения строк "."
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Магазин FB акаунтов от "Я - рядом!" - iRyadom.Shop! БМ, ЕААВ, EAAG, ФП нового типа! Магазин ФБ каков - рядом! |
0 | Думаю | 1251 | 28.11.2022, 22:30 автор: Думаю |
|
Лицензия на Shop script 8 + плагины | 2 | inetuser | 2974 | 17.1.2022, 23:30 автор: inetuser |
|
Онлайн курс: 5 шагов к успеху за 1 месяц | 28 | Fubuki | 7428 | 28.12.2020, 1:25 автор: adamsadriane |
|
Обмен: Яндекс Деньги, Киви на ваши WMR, курс 1:1 (без комиссии) | 41 | Nonsys | 22183 | 22.8.2020, 17:32 автор: Nonsys |
|
Купить аккаунты недорого на red-shop.pro Магазин аккаунтов соц сетей |
17 | redshop | 8335 | 26.3.2020, 17:56 автор: Azyuka |
Текстовая версия | Сейчас: 18.4.2024, 16:21 |