HostCMS
Выдано 65 988 лицензий.
На главную страницу Карта сайта

Автоматическое обновление курсов валют в интернет-магазине

Список форумовПолезные решения на базе HostCMS

Автоматическое обновление курсов валют в интернет-магазине
natalya

Регистрация: 30.11.1999
Для реализации автоматического обновления курсов валют в интернет-магазине можно воспользоваться файлом обновления update_currency.php, который необходимо сохранить в корне директории htdocs. Код этой программы представлен ниже:

<?php
/*
Файл обновления валют на текущий день по курсу ЦБ.
Внимание!
Текущей валютой должен быть установлен рубль с коэффициентом пересчета 1.
*/

// Подключаем основные классы
require_once('main_classes.php');

$GLOBALS['kernel']->LoadModules(); # Загрузка модулей

// Инициализация CURRENT_SITE и констант
$admin = new Admin();
$admin->admin_init();

/*
Массив идентификаторов валют магазна, укажите в данном массиве
перечень валют по приведенной схеме с их идентифкаторами.
*/
$CurrenciesID = array();
$CurrenciesID['USD'] = 15;
$CurrenciesID['EUR'] = 14;

// Локаль
setlocale(LC_NUMERIC, 'POSIX');

$parser = new XMLparser();

$link = 'http://www.cbr.ru/scripts/XML_daily.asp';

function GetCurrencyByName($valute_mas)
{
   $currencies = array();
   foreach ($valute_mas as $val)
   {
      if (floatval($val['value']['Nominal'][0]['value']) >= 1)
      {
         $val['value']['Value'][0]['value'] = str_replace(',', '.', $val['value']['Value'][0]['value']);
         $val['value']['Nominal'][0]['value'] = str_replace(',', '.', $val['value']['Nominal'][0]['value']);

         if ($val['value']['Value'][0]['value'] > 0)
         {
            $key_cur = $val['value']['CharCode'][0]['value'];
            $currencies[$key_cur] = $val['value']['Value'][0]['value'] / $val['value']['Nominal'][0]['value'];
         }
      }
   }

   return $currencies;
}

if (class_exists('shop'))
{
   $Shop = new shop();

   if ($xml = file_get_contents($link))
   {
      $tags = $parser->ParseValue($xml);
      $count = count($tags['ValCurs'][0]['value']['Valute']);
      $valute = $tags['ValCurs'][0]['value']['Valute'];
      $currencies = GetCurrencyByName($valute);

      // Просматриваем все полученные курсы валют
      foreach ($CurrenciesID as $key => $val)
      {
         // Если эту валюту нужно обновлять в нашем магазине
         if (isset($currencies[$key]))
         {
            $param = array();
            $param['id'] = $val;
            $param['value_in_basic_currency'] = $currencies[$key];

            // Обновляем валюту
            $Shop->UpdateCurrency($param);
         }
      }
   }
   else
   {
      show_error_message("Не удалось открыть файл" );
   }
}
else
{
   show_error_message("Модуль магазина не найден" );
}
?>

После запуска этой программы из браузера происходит автоматическое обновление валют в базе данных системы управления по курсу текущего дня. Перед использованием программы update_currency.php необходимо обновить модуль интернет-магазина.
Профиль | Сообщений: 2634 | Дата создания: 13.09.2007 11:16:09
Re: Автоматическое обновление курсов валют в интернет-магазине
akey

Регистрация: 06.12.2007
RE: Перед использованием программы update_currency.php необходимо обновить модуль интернет-магазина.
Вопрос: Подскажите пожалуйста что это означает и как это можно осуществить, — обновить модуль интернет-магазина.
Обновить файл shop.php? А как это можно проделать? Как быть с Zend?

Заранее признателен.
Профиль | Сообщений: 4 | Дата создания: 10.12.2007 09:19:24
Re: Автоматическое обновление курсов валют в интернет-магазине
natalya

Регистрация: 30.11.1999
Обновить модуль интернет-магазина означает обновить файл shop.class.php. Это файл системы управления, и его просто нужно заменить новым в соответствующей директории.
Профиль | Сообщений: 2634 | Дата создания: 10.12.2007 15:05:49
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel

Регистрация: 10.08.2007
Здравствуйте Наташа!
Подскажите, обновление валют происходит автоматически ежедневно или необходимо каждый раз для обновления запускать update_currency.php?

yestravel
Профиль | Сообщений: 85 | Дата создания: 19.05.2008 03:20:09
Re: Автоматическое обновление курсов валют в интернет-магазине
natalya

Регистрация: 30.11.1999
yestravel, доброе утро.
Обновление курсов валют с помощью данного скрипта НЕ происходит автоматически ежедневно, например.
Нужно самостоятельно запускать скрипт update_currency.php с требуемой периодичностью(либо настроить выполнение данного скрипта с помощью планировщика задач Cron).
Профиль | Сообщений: 2634 | Дата создания: 19.05.2008 09:57:13
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel

Регистрация: 10.08.2007
Здравствуйте Наташа!
Поставили скрипт в Cron — работает как часики, спасибо! Возникло несколько вопросов:
1. Данные по курсам валют не архивируются, значит возможны недоразумения с клиентами по поводу курса валют на данную дату (нет данных о дате курса, возможна ли привязка курса к конкретной дате и сохранение полученных курсов в базе данных?).
2. Есть ли возможность выводить на страницы сайта текущий курс с указанием даты (желательно и времени обновления, на Cron у нас например курс обновляется каждые 30 минут, у РБК каждые 15 минут).
3. Возможно ли создание информеров для экспорта на другие сайты (сторонние, базы разные).
Подскажите, что можно из этого реализовать, не важно если что-то за оплату…
Спасибо!

yestravel
Профиль | Сообщений: 85 | Дата создания: 20.05.2008 02:57:56
Re: Автоматическое обновление курсов валют в интернет-магазине
natalya

Регистрация: 30.11.1999
Добрый день.
1. архив валют не ведется по причине того, что курсы валют нужны исключительно для пересчета стоимости товаров, и в хранении истории обновлений курсов нет надобности. Кроме того, в базе данных структура таблицы для курсов валют не содержит поля для хранения даты добавления.
2. возможность вывода текущего курса есть, но дата в базе данных не хранится.
3. теоретически такая возможность есть(на стороннем сайте требуется разработка javascript-а, который будет запрашивать валюты на Вашем сайте).
Профиль | Сообщений: 2634 | Дата создания: 20.05.2008 17:04:18
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel

Регистрация: 10.08.2007
При ручном запуске update_currency.php валюты обновляются и проблем нет, поставили выполнение скрипта в Cron — обновление не происходит, поступает сообщение об ошибке:
/httpdocs/update_currency.php: line 1:?
: No such file or directory
/httpdocs/update_currency.php: line 2:
: command not found
/httpdocs/update_currency.php: line 3: /*
: No such file or directory
/httpdocs/update_currency.php: line 4: Файл: command not found
/httpdocs/update_currency.php: line 5: Внимание!
: command not found
/httpdocs/update_currency.php: line 6: Текущей: command not found
/httpdocs/update_currency.php: line 7: */
: No such file or directory
/httpdocs/update_currency.php: line 8:
: command not found
/httpdocs/update_currency.php: line 9: //: is a directory
/httpdocs/update_currency.php: line 10: syntax error near unexpected token `'main_classes.php''
/httpdocs/update_currency.php: line 10: `require_once('main_classes.php');
'
Подскажите, в чём может быть дело?

yestravel
Профиль | Сообщений: 85 | Дата создания: 24.05.2008 18:47:41
Re: Автоматическое обновление курсов валют в интернет-магазине
HostCMS
Модератор

Регистрация: 02.04.2007
В указанном файле замените строку:
require_once('main_classes.php');

на 
require_once(dirname(__FILE__) . '/' . 'main_classes.php');
Профиль | Сообщений: 10759 | Дата создания: 26.05.2008 09:15:04
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel

Регистрация: 10.08.2007
Здравствуйте Наталья!

Строчку заменил, но ошибка осталась:

/httpdocs/update_currency.php: line 10: syntax error near unexpected token `dirname'
/httpdocs/update_currency.php: line 10: `require_once(dirname(__FILE__). '/'. 'main_classes.php');

yestravel
Профиль | Сообщений: 85 | Дата создания: 26.05.2008 14:21:04

12345

Авторизация
Логин: Пароль:  

Список форумовПолезные решения на базе HostCMS

О нас говорят!

Идеальная система для создания идеальных сайтов. Удобна как для разработки, так и для администрирования сайта. А ещё великолепная тех. поддержка. Я считаю, HostCMS — это самая лучшая русская CMS!

D'sant
Технический директор
Заболотников Антон Сергеевич

Акции партнеров

Хостинг от SPRINTHOST.RU

При покупке лицензии HostCMS в компании SPRINTHOST.RU в зависимости от выбранной редакции SPRINTHOST.RU дарит вам бесплатный хостинг по подходящему тарифному плану на период от 3 до 12 месяцев!

Рекомендуем хостинг

HOST-FOOD

Тариф «HostCMS» за 150 руб./мес.

Создаете сайты?

У нас есть партнерское предложение по поставке системы управления сайтом:

О HostCMS
Редакции HostCMS
Возможности
Поддержка
Области применения
Партнерская программа
Заказать сайт