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

Тема в разделе "Opencart", создана пользователем Chvalov, 28 июл 2013.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. Chvalov

    Chvalov

    Регистр.:
    31 окт 2011
    Сообщения:
    236
    Симпатии:
    76
    Здравствуйте, подскажите пожалуйста откуда можно брать курс валют для OpenCart 1.5.4.1
    Мне нужно чтобы основной валютой был доллар и ее можно было конвертировать в EUR, UAH, RUB

    Хочу сделать вот по этому примеру
    но там относительно гривны, а нужно от Доллара
     
  2. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200
    Вот, например, данные от European Central Bank.
    Перейти по ссылке

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

    Chvalov

    Регистр.:
    31 окт 2011
    Сообщения:
    236
    Симпатии:
    76
    Я не понял, как это делим его значения ???
    у меня такое чувство что это что то мутное получиться
     
  4. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200

    Ну как в школе пропорции решали крестиком, помнишь? Перейти по ссылке...

    Как-то так:
    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$matchesPREG_SET_ORDER);
    foreach (
    $matches as $key => $value) {
        if (
    $value[1] == "USD") {
            
    $usdRate $value[2];
            echo 
    '1 USD' ' стоит ' $usdRate ' ' 'EUR' '<br/>';
            continue;
        }
        echo 
    '1 USD' ' стоит ' $value[2] / $usdRate ' ' $value[1] . '<br/>';
    }

    __________________________________________________________________________________________________________________________________________
    P.S.
    Я только что заметил, что тут http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml нет UAH. =(​

    В том скрипте есть другой источник http://pfsoft.com.ua/service/currency/, там можно посчитать курс относительно доллара тоже. Я постараюсь это сделать на днях и отвечу в теме.​
     
  5. Chvalov

    Chvalov

    Регистр.:
    31 окт 2011
    Сообщения:
    236
    Симпатии:
    76
    Как то трудно это все:conf:
    А нет курсов относительно доллара что-бы получать их в xml ???

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

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

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


    __________________________________________________________________________________________________________________________________________
    P.S.
    1) Вот что я заметил https://spreadsheets.google.com/fee...E9laEZJdzhmMzdmcW90VWNfUTYtM2c/2/public/basic здесь курс относительно доллара, но как то там все запутанно выглядит​

    2) А вот здесь выглядит на много лучше​
    http://themoneyconverter.com/rss-feed/USD/rss.xmlтам можно брать курс от будь чего например от доллара к гривнетам вод такой вид - USD/UAH - Доллар к гривне, USD/RUB - доллар к рублю​
     
  6. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200
    Вот получаем нужные вам коэффициенты для конвертации из Перейти по ссылке

    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;
     
    Chvalov нравится это.
  7. Chvalov

    Chvalov

    Регистр.:
    31 окт 2011
    Сообщения:
    236
    Симпатии:
    76
    Сделал по примеру
    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($conUAH8'.''') . "', 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($conRUB8'.''') . "', 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
    В чем проблема и как ее решить ??
     
    Manykov нравится это.
  8. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200
    Проблема в том, что там, где запускаешь нет расширения pdo у php.

    Решиние:
    • Установить расширение pdo и pdo_mysql, если это возможно, или попросить у суппорта хостинга.
    • Переписать без pdo (Перейти по ссылке)
     
  9. Chvalov

    Chvalov

    Регистр.:
    31 окт 2011
    Сообщения:
    236
    Симпатии:
    76
    У меня хостинг avahost.net
    там они постоянно ищут какие-то выходы, не хотят они включать ничего
    можно ли как то подключить модуль через .htaccess или через php.ini ???
    и как это сделать

    или может в этой CPanel есть какой-то пункт позволяющий установить pdo и pdo_mysql ??
     
  10. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    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 дней (многие это предоставляют) и пробуй.
     
    Шумадан нравится это.