Помощь Курс валют относительно доллара в xml

Chvalov

Гуру форума
Регистрация
31 Окт 2011
Сообщения
265
Реакции
81
Здравствуйте, подскажите пожалуйста откуда можно брать курс валют для OpenCart 1.5.4.1
Мне нужно чтобы основной валютой был доллар и ее можно было конвертировать в EUR, UAH, RUB

Хочу сделать вот по этому примеру
но там относительно гривны, а нужно от Доллара
 
Вот, например, данные от European Central Bank.
Для просмотра ссылки Войди или Зарегистрируйся

Тут относительно евро, если хотим относительно доллара, то просто делим все значения на его rate.
 
Вот, например, данные от European Central Bank.
Для просмотра ссылки Войди или Зарегистрируйся

Тут относительно евро, если хотим относительно доллара, то просто делим все значения на его rate.

Я не понял, как это делим его значения ???
у меня такое чувство что это что то мутное получиться
 
Я не понял, как это делим его значения ???
у меня такое чувство что это что то мутное получиться


Ну как в школе пропорции решали крестиком, помнишь? Для просмотра ссылки Войди или Зарегистрируйся...

Как-то так:
PHP:
<?
$data = file_get_contents('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');
preg_match_all('/<Cube currency=\'([A-Z]{3})\' rate=\'([0-9.]+)\'\/>/', $data, $matches, PREG_SET_ORDER);
foreach ($matches as $key => $value) {
    if ($value[1] == "USD") {
        $usdRate = $value[2];
        echo '1 USD' . ' стоит ' . 1 / $usdRate . ' ' . 'EUR' . '<br/>';
        continue;
    }
    echo '1 USD' . ' стоит ' . $value[2] / $usdRate . ' ' . $value[1] . '<br/>';
}


__________________________________________________________________________________________________________________________________________
P.S.
Я только что заметил, что тут Для просмотра ссылки Войди или Зарегистрируйся нет UAH. =(​
В том скрипте есть другой источник Для просмотра ссылки Войди или Зарегистрируйся, там можно посчитать курс относительно доллара тоже. Я постараюсь это сделать на днях и отвечу в теме.​
 
Как то трудно это все:conf:
А нет курсов относительно доллара что-бы получать их в xml ???

Правда можно попробовать написать маленький парсер и чтобы он сохранял уже в xml, сам парсер при этом уже через cron запускать​
а в OpenCart уже подправить чтобы брало с моего xml Файла, для меня так легче но дольше получиться и как то все запутанно​

А если попробовать вод так:
1) Брать курс валют с Для просмотра ссылки Войди или Зарегистрируйся
2) Подредактировать тот пример что здесь Для просмотра ссылки Войди или Зарегистрируйся под мою задачу
3) Так как у меня доллар будет стоять по умолчанию поставить курс не 1.00000, а 1.3260

Будет ли такой метод работать ???


__________________________________________________________________________________________________________________________________________
P.S.
1) Вот что я заметил Для просмотра ссылки Войди или Зарегистрируйся здесь курс относительно доллара, но как то там все запутанно выглядит​
2) А вот здесь выглядит на много лучше​
Для просмотра ссылки Войди или Зарегистрируйсятам можно брать курс от будь чего например от доллара к гривнетам вод такой вид - USD/UAH - Доллар к гривне, USD/RUB - доллар к рублю​
 
Вот получаем нужные вам коэффициенты для конвертации из Для просмотра ссылки Войди или Зарегистрируйся

PHP:
$data = file_get_contents('http://themoneyconverter.com/rss-feed/USD/rss.xml');
 
// Евро
preg_match('/<description>1 United States Dollar = ([0-9.]+) Euro<\/description>/', $data, $matches);
$codEUR = "EUR";
$conEUR = $matches[1];
 
// Гривны
preg_match('/<description>1 United States Dollar = ([0-9.]+) Ukraine Hryvnia<\/description>/', $data, $matches);
$codUAH = "UAH";
$conUAH= $matches[1];
 
// Рубли
preg_match('/<description>1 United States Dollar = ([0-9.]+) Russian Rouble<\/description>/', $data, $matches);
$codRUB = "RUB";
$conRUB= $matches[1];
 
echo $conEUR;
echo $conUAH;
echo $conRUB;
 
Сделал по примеру
PHP:
<?php
// Подключение к БД
include 'config.php';
$dbhost = DB_HOSTNAME;
$dbuser = DB_USERNAME;
$dbpass = DB_PASSWORD;
$dbname = DB_DATABASE;
$sqlchar='utf8';
 
$db = new PDO ( 'mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
$db->query ( 'SET character_set_connection = '.$sqlchar );
$db->query ( 'SET character_set_client = '.$sqlchar );
$db->query ( 'SET character_set_results = '.$sqlchar );
 
$default=$db->query("SELECT value FROM " . DB_PREFIX . "currency WHERE code='USD'")->fetch(PDO::FETCH_ASSOC);
 
if($default['value']== 1.00000000){
    $xml = simplexml_load_file('http://themoneyconverter.com/rss-feed/USD/rss.xml');
 
    $price=1; // один доллар;
 
    // Гривны
    preg_match('/<description>1 United States Dollar = ([0-9.]+) Ukraine Hryvnia<\/description>/', $data, $matches);
    $codUAH = "UAH";
    $conUAH= $matches[1];
 
    // Рубли
    preg_match('/<description>1 United States Dollar = ([0-9.]+) Russian Rouble<\/description>/', $data, $matches);
    $codRUB = "RUB";
    $conRUB= $matches[1];
 
 
date_default_timezone_set('Europe/Kiev');
$date=date('Y-m-d H:i:s');
 
$stmt = $db->query("SELECT code FROM " . DB_PREFIX . "currency");
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//echo $row['code'] ;
switch ($row['code']){
 
case 'USD':
        $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '1.00000000', date_modified = '" .  $date . "' WHERE code = 'USD'");
        break;
 
case $codUAH:
if($valUAH==true){
        $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conUAH, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codUAH . "'");
        }else{
        echo "Валюта UAH не обновлена (нет курса)<br>";
        }
        break;
 
case $codRUB:
if($valUSD==true){
        $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conRUB, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codRUB . "'");
        }else{
        echo "Валюта RUB не обновлена (нет курса)<br>";
        }
        break;
        }
        }
     
        $defaultd=$db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code='USD'")->fetch(PDO::FETCH_ASSOC);
        echo 'Курс обновился в ('.$defaultd['date_modified'].')';
        }
        else
        {
        echo 'Курс не обновился! Установите Доллар по умолчанию';
        }
?>
но при заходе на Для просмотра ссылки Войди или Зарегистрируйся
появляется вод такая ошибка: Fatal error: Class 'PDO' not found in /home/myhost/public_html/currency_usd.php on line 10
В чем проблема и как ее решить ??
 
появляется вод такая ошибка: Fatal error: Class 'PDO' not found in /home/myhost/public_html/currency_usd.php on line 10
В чем проблема и как ее решить ??

Проблема в том, что там, где запускаешь нет расширения pdo у php.

Решиние:
  • Установить расширение pdo и pdo_mysql, если это возможно, или попросить у суппорта хостинга.
  • Переписать без pdo (Для просмотра ссылки Войди или Зарегистрируйся)
 
У меня хостинг avahost.net
там они постоянно ищут какие-то выходы, не хотят они включать ничего
можно ли как то подключить модуль через .htaccess или через php.ini ???
и как это сделать

или может в этой CPanel есть какой-то пункт позволяющий установить pdo и pdo_mysql ??
 
1. You can go to CPanel of your hosting, choose PHP settings and enable the PDO Extension. That works for me.

2. Если есть доступ к php.ini
дописываем и рестартим (если опять же есть возможность)
extension="pdo.so"
extension="pdo_mysql.so"

3. Либо же в корень сайта кинуть php.ini с этим содержанием.

Либо избавляться от него совсем. Впрочем это уже было сказано.
Меняй хостера. Бери тест на 7 дней (многие это предоставляют) и пробуй.
 
Назад
Сверху