Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.12.2016, 21:35
Новичок на форуме
Отправить личное сообщение для AlexLichi Посмотреть профиль Найти все сообщения от AlexLichi
 
Регистрация: 31.12.2016
Сообщений: 6

Как присвоить свою PHP переменную USD/RUB из JavaScript информера Forex?
Информер называется:
"Информер - Курс рубля на межбанковском рынке"
http://www.forexpf.ru/_informer_/

кусок его кода такой:
<td id="usdrubbid">0.00</td>- этот курс вставляется в ячейку таблицы информера.

Мне нужно запихнуть эту переменную в свою переменную php типо $my

ссылка на код JavaScript на их серваке:
<script type="text/javascript" charset="utf-8" src="http://informers.forexpf.ru/export/euusrub.js"></script>


Просто моя задача такая, что нужно вычесть текущий курс USD/RUB Форекса из курса ЦБ РФ. А курс ЦБ РФ находится у меня в PHP переменной $usd

Или если знаете где можно получить курс USD/RUB Форекса с другого источника по api или xml, напишите плиз ))

Последний раз редактировалось AlexLichi, 01.01.2017 в 16:21.
Ответить с цитированием
  #2 (permalink)  
Старый 01.01.2017, 02:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А вам что нужно информер или курс валют?
Ответить с цитированием
  #3 (permalink)  
Старый 01.01.2017, 14:34
Новичок на форуме
Отправить личное сообщение для AlexLichi Посмотреть профиль Найти все сообщения от AlexLichi
 
Регистрация: 31.12.2016
Сообщений: 6

Сообщение от laimas Посмотреть сообщение
А вам что нужно информер или курс валют?
мне просто нужно для себя, чтобы контролировать разницу между курсом ЦБ USD/RUB и текущим курсом Форекса и не важно как именно это реализовать в принципе )) и еще хочется прикрутить в идеале оповещения на емайл или смс, если выше порога эта разница)
Ответить с цитированием
  #4 (permalink)  
Старый 01.01.2017, 15:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Что первично так и не понятно. Если отобразить на клиенте - помещать в страницу курсы ЦБ как js-переменные. Курсы из информера обычно, на jQ как $('#usdrubbid').text() и $('#eurrubbid').text(), или без него document.getEleventById('usdrubbid').
Если отправлять то с клиента при загрузке страницы курсы информера отдавать серверу.
Ответить с цитированием
  #5 (permalink)  
Старый 01.01.2017, 16:39
Новичок на форуме
Отправить личное сообщение для AlexLichi Посмотреть профиль Найти все сообщения от AlexLichi
 
Регистрация: 31.12.2016
Сообщений: 6

Сообщение от laimas Посмотреть сообщение
Что первично так и не понятно
ну я как клиент.

Я так понимаю когда информер загружается у меня на сайте, то
из их JS: http://informers.forexpf.ru/export/euusrub.js

там есть строчка document.getElementById("usdrubbid").innerHTML=61. 532;

и значение 61.532 вставляется в информер сюда вместо 0.00:
<td id="usdrubbid">0.00</td>

а мне нужно, чтобы оно вставилось в мою переменную php $my

Затем я просто в своем коде на сайте возьму и вычту из $my курс ЦБ РФ, который находится в переменной $usd и всё.

Курс ЦБ РФ в переменной $usd у меня уже есть.

Пробовал вставлять этот код "$('#usdrubbid').text()" на сайт и вылезает ошибка:
Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$'
Кароч я не знаю как заюзать этот код правильно

Последний раз редактировалось AlexLichi, 01.01.2017 в 16:43.
Ответить с цитированием
  #6 (permalink)  
Старый 01.01.2017, 16:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от AlexLichi
а мне нужно, чтобы оно вставилось в мою переменную php $my
Нельзя на клиенте вставить некое значение в php-переменную, ибо нет их на клиенте.

Если вся эта затея только ради того чтобы на сервере что-то со значениями курсов форекс сделать, ну так получайте их сразу сервером:

preg_match_all('#\d{2,}\.\d{3,}#', file_get_contents('http://informers.forexpf.ru/export/euusrub.js'), $forex);

$usd = $forex[0][0];
$eur = $forex[0][2];
Ответить с цитированием
  #7 (permalink)  
Старый 01.01.2017, 17:23
Новичок на форуме
Отправить личное сообщение для AlexLichi Посмотреть профиль Найти все сообщения от AlexLichi
 
Регистрация: 31.12.2016
Сообщений: 6

Сообщение от laimas Посмотреть сообщение
так получайте их сразу сервером
Спасибо большое! Всё работает =)
Ответить с цитированием
  #8 (permalink)  
Старый 03.01.2017, 16:28
Новичок на форуме
Отправить личное сообщение для AlexLichi Посмотреть профиль Найти все сообщения от AlexLichi
 
Регистрация: 31.12.2016
Сообщений: 6

Сообщение от laimas Посмотреть сообщение
что-то со значениями курсов форекс сделать
Не знаю почему, но сейчас где-то в 25% случаев когда обновляю страницу, то не выводятся значения $usd и $eur.
Бывает только $eur не выводится.

И когда не выводится $eur, то значение $usd имеет этот курс евро, который должен был присвоиться переменной $eur.

Этот баг вылезает именно когда иногда, например раз 1 минуту обновляешь страницу с кодом. А если подряд ее обновлять то можно раз 30 обновить и бага этого не будет )
При этом сами курсы в информере официальном всегда нормальные значения показывают.

А еще немного не по теме, но такой вот баг ща заметил. Просто код вычитания одной переменной из другой:
CBR USD = 60.6569
USD Forex = 60.566
USD Forex-CBR = -0.090899999999998
Почему не -0,0909 ?

вот мой полный код:
<!--  FOREXPF.RU - Forex start -->
<table width="210" border="1" style="border-collapse: collapse; text-align:center; font-size:11px; color:#000000; "><tr bgcolor=""><td height="10" valign="top" colspan="3"><style>A.forexpf_ { text-decoration: none;} A.forexpf_:visited {color: #000000;} </style><a href="http://www.forexpf.ru/" title="Курсы валют" target="_blank" class="forexpf_">Курсы валют</a></td></tr><tr bgcolor="F6EDDD"><td></td><td>Покупка</td><td>Продажа</td></tr><tr bgcolor=""><td><a href="http://www.forexpf.ru/chart/usdrub/" title="Курс доллара" target="_blank" class="forexpf_">USD/RUB</a></td><td id="usdrubbid">0.00</td><td id="usdrubask">0.00</td></tr><tr bgcolor="F6EDDD"><td><a href="http://www.forexpf.ru/chart/eurrub/" title="Курс Евро" target="_blank" class="forexpf_">EUR/RUB</a></td><td id="eurrubbid">0.00</td><td id="eurrubask">0.00</td></tr><tr bgcolor=""><td colspan="3" id="euusrutm">Данные на</td></tr></table><script type="text/javascript" charset="utf-8" src="http://informers.forexpf.ru/export/euusrub.js"></script>
<!--  FOREXPF.RU - Forex end -->

<?
$eur_value=str_replace(",",".",$eur_value);
$usd_value=str_replace(",",".",$usd_value);
echo "<br>CBR USD = $usd_value";
echo "<br>CBR EUR = $eur_value";

preg_match_all('#\d{2,}\.\d{3,}#', file_get_contents('http://informers.forexpf.ru/export/euusrub.js'), $forex);
$usd = $forex[0][0];
$eur = $forex[0][2];
echo "<br>USD Forex = $usd";
echo "<br>EUR Forex = $eur";
$usd_minus=$usd-$usd_value;
echo "<br><br>USD Forex-CBR = $usd_minus";
$eur_minus=$eur-$eur_value;
echo "<br>EUR Forex-CBR = $eur_minus";
?>

Последний раз редактировалось AlexLichi, 03.01.2017 в 18:27.
Ответить с цитированием
  #9 (permalink)  
Старый 03.01.2017, 18:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$sbr_usd = 60.6569;
$sbr_eur = 62.9576;

if($forex = file_get_contents('http://informers.forexpf.ru/export/euusrub.js')) {
    if(preg_match_all('#\d{1,}\.\d{1,}#', $forex, $forex)) {
        $usd = $forex[0][0];
        $eur = $forex[0][2];
        echo 'Forex USD = ' . $usd . ', difference = ' . round($usd - $sbr_usd, 3) . '<br>' .
             'Forex EUR = ' . $eur . ', difference = ' . round($eur - $sbr_eur, 3);
    } else echo 'Empty';    
} else echo 'No connect';


Потому, что курс не обязательно nn.три_знака, а -0.090899999999998 это не баг, а точность которая обеспечивается разрядностью языка и платформы.
Ответить с цитированием
  #10 (permalink)  
Старый 03.01.2017, 19:46
Новичок на форуме
Отправить личное сообщение для AlexLichi Посмотреть профиль Найти все сообщения от AlexLichi
 
Регистрация: 31.12.2016
Сообщений: 6

спс за код )
Сообщение от laimas Посмотреть сообщение
а точность которая обеспечивается разрядностью языка и платформы.
ну так фишка же в том, что тут неоткуда появляться этим миллионным долям.
Я вот такой код выполняю для теста:
<?
$usd1 = 60.6569;
$usd2 = 60.566;
$usd_minus=$usd2-$usd1;
echo "$usd_minus";
?>

И мне выводит результат -0.090899999999998

Хотя правильное число должно быть -0,0909
Если например на калькуляторе посчитать

Последний раз редактировалось AlexLichi, 03.01.2017 в 20:09.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как в JavaScript присвоить функцию свойству объекта? kokon Общие вопросы Javascript 5 25.05.2010 22:11
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
Как поместить javascript в php цикл do{} while() galap Общие вопросы Javascript 4 09.04.2010 14:57
Как вывести переменную из php в сценарий Vitaly jQuery 5 02.07.2009 17:54