Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод курса валют (https://javascript.ru/forum/misc/72548-vyvod-kursa-valyut.html)

laimas 13.02.2018 06:43

Цитата:

Сообщение от spinastr
Тут тоже текущий курс доллара?

Это курсы Yahoo, и их можно получать без всякого РНР сервера. Удобно, но, бывает, что и нет ответа от этого сервера. Причина конечно мне не ведома. Если использовать Yahoo, то в нем нельзя указать дату запрашиваемую, поэтому нужно хранить на клиенте курс, чтобы сравнивать с чем-то для расчета динамики.

spinastr 13.02.2018 06:57

laimas,
Я лучше подожду может этот скрипт. Может удастся что придумать.

laimas 13.02.2018 07:05

Цитата:

Сообщение от spinastr
Может удастся что придумать.

А что тут думать, выходные надо учитывать. А вот вам нужно определиться чего нужно. Если курс в шапке понятен, то что такое в боксе у вас где два курса? А я об этом писал, что если в боксе два курса, то нужно их выводить с датами, в противном случае в боксе тоже должен быть один курс - за текущую дату.

laimas 13.02.2018 09:37

Этот записать в current.json

{"current":{"date":"13.2.2018","value":58.02,"rate ":1},"previous":{"date":"12.2.2018","value":58.17, "rate":1}}

Код current.php должен быть таким:

<?
$day = date('w');

if($day && $day<>6) { //если не воскресенье и суббота

    $dir = dirname(__FILE__);
    chdir($dir);

    $currency = json_decode(file_get_contents('current.json'));

    libxml_use_internal_errors();
    $xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_daily.asp?date_req='.date('d/m/Y'));

    $date = date('j.n.Y', strtotime($xml->attributes()->Date));

    foreach ($xml->children() as $child) {
        if($child->NumCode==840) {
            $usd = round((float)str_replace(',', '.', $child->Value), 2);
            break;
        }
    }
    
    if($rate = $usd - $currency->current->value) $rate = $rate < 0 ? 1 : 2;
    
    $currency->previous = clone $currency->current;
    $currency->current->date = $date;
    $currency->current->value = $usd;
    $currency->current->rate = $rate;
    
    chmod($dir, 0777);
    file_put_contents('current.json', json_encode($currency));
    chmod($dir, 0700);

}
?>


В js коде вывода изменения в структуре массивов:

$('.'+k).html("$ " + o.value + ' <b class=' + ['','down','up'][o.rate] +'>' + ['','▼','▲'][o.rate] +'</b>').attr("title", o.date)

spinastr 13.02.2018 13:58

Цитата:

Сообщение от laimas
А что тут думать, выходные надо учитывать. А вот вам нужно определиться чего нужно. Если курс в шапке понятен, то что такое в боксе у вас где два курса? А я об этом писал, что если в боксе два курса, то нужно их выводить с датами, в противном случае в боксе тоже должен быть один курс - за текущую дату.


это просто для примера, нужно просто один бокс, как на том сайте. Удалить не проблема один див. На счёт даты, то при наведении, подсказка. Это в виде кнопки на панели курс и стрелка, там у меня переход на страницу с информерами.

laimas 13.02.2018 14:01

Это уже не мои проблемы, что для примера, а что надо.

spinastr 13.02.2018 14:05

laimas,

Вроде всё сделал, что дальше делать?

laimas 13.02.2018 14:08

Цитата:

Сообщение от spinastr
Вроде всё сделал, что дальше делать?

Радоваться. Если даты курсов будут некорректны, значит не делать запрос нужно не в субботу и воскресенье, а в воскресенье и понедельник. Для этого заменить здесь if($day && $day<>6) { 6 на 1.

spinastr 13.02.2018 14:22

Урааааа, спасибо посмотрим сегодня в 0:05 что будет!

spinastr 13.02.2018 14:22

laimas,
Ураааа, посмотрим что будет в 0:05


Часовой пояс GMT +3, время: 12:07.