| Автоматическое обновление курсов валют в интернет-магазине | |
|
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 |