Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 2
1

Курс валют

06.05.2015, 20:09. Показов 2569. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Помогите решить возникшую трудность.
Вот скрипт курса валют
Работает не всегда корректно,иногда вместо результата нули
Помогите пожалуйста!
Нужно чтобы скрипт раз в сутки брал информацию из ЦБР и НацБанкаУкраины и сопостовлял его с курсом доллара т.е. берем доллар за единицу

Скрипт обновляется по курлу раз в сутки

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$fp = fopen('cbr.xml', 'w');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.cbr.ru/scripts/XML_daily.asp');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);
curl_close ($ch);
 
$fp = fopen('nbu.xml', 'w');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://bank-ua.com/export/currrate.xml');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);
curl_close ($ch);
Вот файл который грабят результаты для гривны

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
class ExchangeRate {
    public $exchange_url = 'http://bank-ua.com/export/currrate.xml';
    public $xml;
 
    function __construct(){
        return $this->xml = simplexml_load_file($this->exchange_url);
    }
 
    function getExchangeRateByChar3($char3){
        if ($this->xml!==FALSE) {
            foreach($this->xml->children() as $item){
                $row = simplexml_load_string($item->asXML());
                $v = $row->xpath('//char3[. ="' . $char3 . '"]');
                if(isset($v[0])){
                    $result = $item;
                    break;
                }
            }
        }
        return $result;
    }
 
    function getXMLTree (){
        print "<pre>";
        print_r ($this->xml);
        print "</pre>";
    }
}
?>
А вот с ЦБР
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php 
function get_rate($currency) {
    $date = getdate();
    $day_of_the_week = $date['wday'];
 
    switch ($day_of_the_week) {
        case 0:  $k1 = 2; $k2 = 1; break;
        case 1:  $k1 = 3; $k2 = 2; break;
        case 2:  $k1 = 3; $k2 = 0; break;
        default: $k1 = 1; $k2 = 0; break;
    }
 
    $month = $date['mon'] ;
    $day = $date['mday'] ;
    $yesterday = $day - $k1 ;
    $today = $day - $k2 ;
    $year = $date['year'] ;
 
    $date_yesterday = date("d/m/Y", mktime(0, 0, 0, $month, $yesterday, $year ));
    $date_today = date("d/m/Y", mktime(0, 0, 0, $month, $today, $year ));
 
    $rate = array() ;
 
    foreach($currency as $key => $value) {
        $url = 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.$date_yesterday.'&date_req2='.$date_today.'&VAL_NM_RQ='.$value ;
        $xml = simplexml_load_file($url);
        $rate_today = round(str_replace(',','.',$xml->Record[1]->Value), 2);
        $rate_yesterday = round(str_replace(',','.',$xml->Record[0]->Value), 2);
        if (isset($rate_today)) {
            $rate_today = $rate_yesterday;
        }
        $range = round($rate_today - $rate_yesterday, 2) ;
 
        if ($range > 0) {
            $range = '+' . $range;
            $img = 'up' ;
        } elseif ($range == 0) {
            $range = 0 ;
            $img = 0 ;
        } else {
            $img = 'down' ;
        }
 
        $rate[$key] = array(
            'today' => $rate_today,
            'change' => $range,
            'img' => $img
        );
    }
return $rate ;
}
?>
А вот кусок кода выводящий данные
PHP/HTML
1
2
3
<div style="width: 250px; position: absolute; top: 71px; left: 465px; color: #000; font-family: 'Lucida Console';">
 
<acronym style="cursor: help;" title="Центральный банк Российской Федерации">ЦБ&nbsp;РФ</acronym> <font color="#df0101"><?php require_once './rate/get_cbr.php'; $currency = array('$' => 'R01235'); $rate = get_rate($currency); foreach ($rate as $key => $value) { echo number_format((float)$value['today'], 2, '.', ''); } ?></font> р./$ <acronym style="cursor: help;" title="Национальный банк Украины">НБУ</acronym> <font color="#df0101"><?php require_once './rate/get_nbu.php'; $er = new ExchangeRate(); $usd = $er->getExchangeRateByChar3('USD'); echo ($usd->rate / $usd->size); ?></font> грн./$<br />
Или может предложите более простое гениальное решение?
Заранее огромное спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 20:09
Ответы с готовыми решениями:

Курс валют с сайта
Привет! я тут голову ломаю как мне достать из сайта курсы валют... вот что написал $content =...

Вытащить курс валют из html
Как вытащить 25.85 и 26.75 из окружающего мусора? class=&quot;rate__val active&quot;&gt; ...

Курс валют (купить/продать)
Задача в том чтобы отобразить на сайте курс валют, но не только курс по НБУ, а еще и значения...

Курс валют для сайта через сбербанк
на сайт заводятся товары в валюте. для пересчета использовался центробанковский курс(они...

2
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
06.05.2015, 20:53 2
bymakson71,
Посмотрите в сторону api приватбанка
https://api.privatbank.ua/api-... tenbu.html
0
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 2
07.05.2015, 08:58  [ТС] 3
Хотелось бы все же разобраться со своим кодом.Поможете?
0
07.05.2015, 08:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2015, 08:58
Помогаю со студенческими работами здесь

Конвертор валют
Помогите пожалуйста с конвертором валют. Нет ли исходника чтоб посмотреть с чего хотя бы начать?

конвертер валют
Ребят, помогите, пожалуйста, сделать конвертер валют , чтобы он брал данные коэффициентов с сайта :...

траблы с курсом валют
есть таблица, в которой есть поля cost,curr и cost2 в поле cost - цена товара, curr -курс валюты...

Хранение курса валют в сессии
Слушайте а ничего что я курс доллара и евро в куках храню??))) просто курс постоянно обновляется,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru