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

spinastr 11.02.2018 03:24

Всё верно? сохранять?

https://pp.userapi.com/c841639/v8416...Ww5bXRpOrQ.jpg

laimas 11.02.2018 03:25

Цитата:

Сообщение от spinastr
Закачал ваши файлы

В моем файле используются права 644, а надо заменить на 700 строку в файле, и права у папки установить не 755, а 700.

После этого запустить current.php браузером.

laimas 11.02.2018 03:26

Цитата:

Сообщение от spinastr
Всё верно? сохранять?

да

spinastr 11.02.2018 03:27

laimas,

права папки изменил,

запустил, белый лист

spinastr 11.02.2018 03:28

{"current":{"date":"11.2.2018","value":0,"rate":0},"previous":{"date":"10.2.2018","value":58.17,"rate":1}}

laimas 11.02.2018 03:31

Цитата:

Сообщение от spinastr
запустил, белый лист

НУ правильно, в нем же нет вывода в браузер.

{"current":{"date":"11.2.2018","value":0,"rate":0} ,"previous":{"date":"10.2.2018","value":58.17,"rat e":1}}

Все работает, это новый курс.

Теперь открыть .htaccess и убрать # перед инструкцией, чтобы закрыть папку. Сохранить .htaccess.

Все, теперь дело только за cron, если путь корректный (хотя если судить по описанию, это дикость), все будет работать.

spinastr 11.02.2018 03:31



На юкозе стоит ограничение по Get запросу, могут api заблокировать

ссылка на гет запрос юкоз

скрипт может отправлять не более 2.5 запросов в минуту.

laimas 11.02.2018 03:32

Цитата:

Сообщение от laimas
{"current":{"date":"11.2.2018","value":0,"rate" :0}

А вот это не верно курса на 11 число нет.

laimas 11.02.2018 03:34

Цитата:

Сообщение от spinastr
На юкозе стоит ограничение по Get запросу

К запросу домена на котором РНР получает курсы, это отношения не имеет.

spinastr 11.02.2018 03:37

laimas,
СПАСИБО ВАМ!

мне только нужно сделать одну строчку

$ 56.77 ▲

если стрелка вверх то зелёная в низ красная,

я её в панель вставлю там уже есть стилизация.

spinastr 11.02.2018 03:38

Цитата:

Сообщение от laimas (Сообщение 477586)
А вот это не верно курса на 11 число нет.

да нет и что делать?

laimas 11.02.2018 03:40

В планировщике изменить время запроса к ЦБ, планировщик должен запускать скрипт каждый день в 23:30 например. ЦБ по xml запросу не отдаст последний курс, если курса по запрошенной дате нет.

spinastr 11.02.2018 03:44

laimas,

как так сделать одну строчку?

$ 56.77 ▲ - с цветной стрелкой по курсу, зелёная, красная?

laimas 11.02.2018 03:46

Цитата:

Сообщение от spinastr
если стрелка вверх то зелёная в низ красная,
я её в панель вставлю там уже есть стилизация.

Я не знаю что и откуда берется, но если использовать стили, что я ранее писал, то просто заменить цвет

/*правила для стрелки вверх*/
.rate-1:after {
 content: "▲";
 color: #0f0; /*зеленый цвет*/
}
 
/*правила для стрелки вниз*/
.rate-0:after {
 content: "▼";
 color: #f00; /*красный цвет*/
}

spinastr 11.02.2018 03:46

Статистика этого форума 172 сообщения и 922 просмотра
https://pp.userapi.com/c840127/v8401...2R6f6_ZAcM.jpg

laimas 11.02.2018 03:47

Это обязательно сделать - планировщик должен запускать скрипт каждый день в 23:30

spinastr 11.02.2018 03:49

Цитата:

Сообщение от laimas (Сообщение 477594)
Это обязательно сделать - планировщик должен запускать скрипт каждый день в 23:30

это сделал,

а как тут, мне только одна строчка нужно, сегодняшнего курса?


spinastr 11.02.2018 03:54

laimas,

Вот в пейнте нарисовал пример, как хотел

https://pp.userapi.com/c840127/v8401...uH-YOKuqp4.jpg

laimas 11.02.2018 03:59

Цитата:

Сообщение от spinastr
а как тут, мне только одна строчка нужно, сегодняшнего курса?

Нет, лучше не так. Вернуть планировщику время 0:00, а вот даты запроса валюты сдвинуть на день вниз, иначе, если использовать даты валют из json, то будет некорректно.

В файле current.php строку 6 кода (это строка if($xml = simplexml_load_file .....), заменить на эту

if($xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.date('d/m/Y', strtotime('-3 day')).'&date_req2='.date('d/m/Y', strtotime('-1 day')).'&VAL_NM_RQ=R01235')) {


В current.json поместить это

{"current":{"date":"11.2.2018","value":58.17,"rate ":1},"previous":{"date":"10.2.2018","value":57.67, "rate":1}}

чтобы не ждать планировщика.

spinastr 11.02.2018 04:04

вот

https://pp.userapi.com/c831308/v8313...St9M0dmPuY.jpg


spinastr 11.02.2018 04:09

laimas,

в первой строке нету стрелки так и должно?

laimas 11.02.2018 04:11

Цитата:

Сообщение от spinastr
а как тут, мне только одна строчка нужно, сегодняшнего курса?

Цитата:

Сообщение от spinastr
Вот в пейнте нарисовал пример, как хотел

Что во что нужно? Я не понимаю, то речь идет о цветных стрелках и по двум датам, то только текущий курс надо....

laimas 11.02.2018 04:12

Цитата:

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

Не должно, значит где-то нарушены стили или верстка, которая ранее была предложена

spinastr 11.02.2018 04:13

Цитата:

Сообщение от laimas (Сообщение 477600)
Что во что нужно? Я не понимаю, то речь идет о цветных стрелках и по двум датам, то только текущий курс надо....

Нужен текущий курс, со стрелкой динамики.

spinastr 11.02.2018 04:14

Цитата:

Сообщение от laimas (Сообщение 477601)
Не должно, значит где-то нарушены стили или верстка, которая ранее была предложена

<style>
/*общие правила для элементов отображающих курс*/
span[class|=rate] {
 display: block;
 text-align: center;
 padding: 3px 0;
 color: #000;
 font-weight: bold;
}

/*правила для знака доллара*/
span[class|=rate]:before {
 margin-right: 10px;
 content: "$";
}

/*общие правила для стрелок*/
span[class|=rate]:after {
 margin-left: 10px;
}

/*правила для стрелки вверх*/
.rate-1:after {
 content: "▲";
 color: #0f0; /*зеленый цвет*/
}
 
/*правила для стрелки вниз*/
.rate-0:after {
 content: "▼";
 color: #f00; /*красный цвет*/
}


</style>


<div id="usd" class="">
 <span id="current" class="rate-0"></span>
 <span id="previous" class="rate-0"></span>
</div>


<script>


$.getJSON("доменюру", function(data) {
 $.each(data, function(k, o) {
 $('#'+k).text(o.value).attr('class', function() {
 return this.className.replace(/\d/, o.rate) 
 })
 })
});



</script>

laimas 11.02.2018 04:21

Все на месте, и никуда не должна исчезать.

В current.php строка 6 изменена? 0 часов для планировщика указано?

spinastr 11.02.2018 04:27

Цитата:

Сообщение от laimas (Сообщение 477604)
Все на месте, и никуда не должна исчезать.

В current.php строка 6 изменена? 0 часов для планировщика указано?

Вот

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

libxml_use_internal_errors();
if($xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.date('d/m/Y', strtotime('-3 day')).'&date_req2='.date('d/m/Y', strtotime('-1 day')).'&VAL_NM_RQ=R01235')) {
    $last = round((float)str_replace(',', '.', current($xml->Record[0]->Value)), 2);
    $usd_prev = round((float)str_replace(',', '.', current($xml->Record[1]->Value)), 2);
    $usd_curr = round((float)str_replace(',', '.', current($xml->Record[2]->Value)), 2);
    
    chmod($dir, 0700);
    
    file_put_contents('current.json',
        json_encode(
            array(
                'current' => array(
                'date' => date('j.n.Y'),
                'value' => $usd_curr,
                'rate' => intval($usd_curr > $usd_prev) 
            ),
            'previous' => array(
                'date' => date('j.n.Y', strtotime('-1 day')),
                'value' => $usd_prev,
                'rate' => intval($usd_prev > $last)
            )
        ))
    );
    
    chmod($dir, 0700);
}
?>


и

https://pp.userapi.com/c840423/v8404...A48nHNQzNk.jpg

spinastr 11.02.2018 04:31

HTML с страницы вывода


laimas 11.02.2018 04:31

В строке 11, должно быть не chmod($dir, 0700);, а chmod($dir, 0777);, это во второй chmod($dir, 0700);

spinastr 11.02.2018 04:39

laimas,
поменял стрелка не появилась

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

libxml_use_internal_errors();
if($xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.date('d/m/Y', strtotime('-3 day')).'&date_req2='.date('d/m/Y', strtotime('-1 day')).'&VAL_NM_RQ=R01235')) {
    $last = round((float)str_replace(',', '.', current($xml->Record[0]->Value)), 2);
    $usd_prev = round((float)str_replace(',', '.', current($xml->Record[1]->Value)), 2);
    $usd_curr = round((float)str_replace(',', '.', current($xml->Record[2]->Value)), 2);
    
    chmod($dir, 0777);
    
    file_put_contents('current.json',
        json_encode(
            array(
                'current' => array(
                'date' => date('j.n.Y'),
                'value' => $usd_curr,
                'rate' => intval($usd_curr > $usd_prev) 
            ),
            'previous' => array(
                'date' => date('j.n.Y', strtotime('-1 day')),
                'value' => $usd_prev,
                'rate' => intval($usd_prev > $last)
            )
        ))
    );
    
    chmod($dir, 0700);
}
?>

laimas 11.02.2018 05:03

К картинке стилей не привяжешь, здесь в примере это div class="ratehead".
.

<style>
.ratebox {
    width: 200px;
}

.ratebox span {
    display: block;
    text-align: center;
    padding: 3px 0;
    font-weight: bold; 
}

.current:before, .previous:before {
    content: "$";
} 
 
/*правила для знака доллара*/
.ratebox span:before {
    margin-right: 10px;
}
 
/*общие правила для стрелок*/
.ratebox span:after {
    margin-left: 10px;
}
 
/*правила для стрелки вверх*/
.up:after {
    content: "▲";
    color: #0f0; /*зеленый цвет*/
}
  
/*правила для стрелки вниз*/
.down:after {
    content: "▼";
    color: #f00; /*красный цвет*/
}
 
.ratehead {
    background-color: #3CA0D9;
}

.ratehead * {
    color: #fff;
}

.ratehead *:after {
    color: #fff; /*белый цвет стрелки*/
}
 
</style>
 
<div class="ratehead"><span class="current"></span></div>
 
<div class="ratebox">
 <span class="current"></span>
 <span class="previous"></span>
</div>
 
 
<script>
$.getJSON("http://domain.ru", function(data) {
    $.each(data, function(k, o) {
        $('.'+k).text(o.value).addClass(['down','up'][o.rate])
    })
});
</script>

laimas 11.02.2018 05:04

Цитата:

Сообщение от spinastr
поменял стрелка не появилась

Это не для стрелок, а управление правами каталога.

spinastr 11.02.2018 05:10

laimas,

https://pp.userapi.com/c840631/v8406...rWkzdMhN0E.jpg

всё сломалось.

А как сделать курс текущий?

spinastr 11.02.2018 05:13

Забыл домен вставить

https://pp.userapi.com/c840631/v8406...LNHHjw-MXY.jpg

spinastr 11.02.2018 05:14

Когда я захожу на доммен мне выводится типа json это будет всем доступно и все будут пользоватся?

laimas 11.02.2018 05:16

Я не знаю чего вы там у себя творите, это сами разбирайте, а вот как все выглядит на локальном сервере, с указанной ранее версткой, стилями и js измененном.

laimas 11.02.2018 05:19

Цитата:

Сообщение от spinastr
Когда я захожу на доммен мне выводится типа json это будет всем доступно и все будут пользоватся?

Если в браузере набирать адрес, то да, будет показан json, но доступ к нему скриптами на странице будет блокирован.

Можно и в барузере запретить вывод json.

spinastr 11.02.2018 05:21

Цитата:

Сообщение от laimas (Сообщение 477614)
Я не знаю чего вы там у себя творите, это сами разбирайте, а вот как все выглядит на локальном сервере, с указанной ранее версткой, стилями и js измененном.

А это и у вас синяя полоска,

а ещё стрелку можно в верхний блок сделать и фон прозрачный?

58.17 - стрелку динамики?

spinastr 11.02.2018 05:21

Цитата:

Сообщение от laimas (Сообщение 477615)
Если в браузере набирать адрес, то да, будет показан json, но доступ к нему скриптами на странице будет блокирован.

Можно и в барузере запретить вывод json.

как в браузере запретить, стало интересно?

laimas 11.02.2018 05:39

Цитата:

Сообщение от spinastr
а ещё стрелку можно в верхний блок сделать и фон прозрачный?

Это сюда, читать, изучать, пробовать. Пример я привел, дальше сами.


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