Страница 1 из 2

Курс валют - как передать значение из модуля в сущность

Добавлено: 04 окт 2021, 16:39
alcompstudio
Добрый день!

Есть такая структура

Валюты
- Курсы валют

Нужно связать встроенный модуль курса валют и эту "конструкцию" по автоматической фиксации нового курса по каждой валюте с определенной периодичностью (например, 1 раз в день). Ну само обновление курса в принципе настраивается по Крону у хостера на сервере. Может как-то на это событие поставить автоматическое создание записи с курсом в сущности Курсы валют под каждой соответствующей родительской записью Валюты ?
Курсы_валют_1.jpg
А еще бы лучше было бы забирать "обратные" курсы - т.е. не курс доллара к рублю, а курс рубля к доллару
Курсы_валют_2.jpg
Может кто-то уже внедрял такое/подобное решение?

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 04 окт 2021, 16:55
believe

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 04 окт 2021, 17:02
alcompstudio
Спасибо, интересная статейка, попробую этот способ.

Но вот хотелось бы использовать имеющийся модуль... он же есть в системе, но как-то не особо функционален... Хотелось бы его использовать в более "расширенном" виде).

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 04 окт 2021, 18:32
nruslan2
ну если немного поизвращаться можно поидеи решить проблему.
не уверен тока в моменте работы крона!!

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 05 окт 2021, 10:28
believe

Код: Выделить всё

$url = 'https://www.cbr.ru/scripts/XML_daily.asp'; 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$content = curl_exec($ch);
curl_close($ch);
$xml = @simplexml_load_string($content);
foreach ($xml->Valute as $item) {
// R01235 - Доллар США
if ($item['ID'] == 'R01235') {
$usd = $item->Value;
}
}
if (!empty($usd)) {
$usd = str_replace(',', '.', $usd);
}
echo $usd;
$form_field_value=$usd;

https://www.cbr.ru/scripts/XML_daily.asp - коды валют
Пример отсюда - https://seolik.ru/blog/php-poluchenie-k ... obanka-111

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 05 окт 2021, 11:02
Develop-Soft
Ну или так:
JS:

Код: Выделить всё

$f_kurs = '579';  // id поля "курс"
$val = 'USD'; // требуемая валюта

echo '<script>'.
'$.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(resp) { '.
'  $("#fields_'.$f_kurs.'").val(resp.Valute["'.$val.'"].Value); '.
'});'.
'</script>';
Изображение

PHP:

Код: Выделить всё

$val = 'USD'; // требуемая валюта

$resp = json_decode(file_get_contents('https://www.cbr-xml-daily.ru/daily_json.js'));
$form_field_value = $resp -> {"Valute"} -> {$val} -> {"Value"};
echo $form_field_value;
Изображение

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 05 окт 2021, 11:28
alcompstudio
О, спасибо за ответы, буду тестировать)

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 05 окт 2021, 11:37
Develop-Soft
И кстати:
alcompstudio писал(а): 04 окт 2021, 16:39 Ну само обновление курса в принципе настраивается по Крону у хостера на сервере.
В этом не вижу смысла, т.к. обновление может инициировать любой пользователь открывший страницу...
alcompstudio писал(а): 04 окт 2021, 16:39 А еще бы лучше было бы забирать "обратные" курсы - т.е. не курс доллара к рублю, а курс рубля к доллару
Арифметика же... 1/курс

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 05 окт 2021, 12:13
nruslan2
А не проще было обратиться к существующей базе данной и забрать оттуда значения, которые были получены через модуль)
А вообще шикарные коды!!

А вопрос отображения - это чистая математика!! что верно подмечено.

Re: Курс валют - как передать значение из модуля в сущность

Добавлено: 05 окт 2021, 12:16
Develop-Soft
nruslan2 писал(а): 05 окт 2021, 12:13 А не проще было обратиться к существующей базе данной и забрать оттуда значения, которые были получены через модуль)
Я не в курсе. У меня этого нет (модуля, базы).