| |
|
|
| | Использовал на сайте запрос курса валют с адреса http://www.cbr.ru/scripts/XML_dynamic.asp, и обработку полученных, предложенным у них же кодом. Но вот с 6.01.2007 я стал получать курсы с нулевыми значениями, причем дата отсутствует. В мае прошлого года тоже были проблемы с получением курса валюты, но тогда просто увеличил период за который запрашивалась валюта.
Попробовал код предложенный по ссылке
http://softtime.ru/forum/read.php?id_forum=1&id_theme=26072&page=1. Тестирую на локальной машине и получаю ответ:
Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей XSL. Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.
--------------------------------------------------------------------------------
В документах XML допускается только один элемент верхнего уровня. Ошибка при обработке ресурса ''http://local/main.php''. Строка 130,Положение 2
Файл main.php содержит только код предложенный в выше указанной ссылке. В чем проблема.
P.S. 13:49 нашего времени (GMT +9), пробую опять код softtime - все валюты отображаются.
Что в Банке РФ долго пьют или в чем причина. Надо знать, чтобы в случае ее повторения, брать курс не с адреса, а из файла на сервере, который записывать при последнем удачном обращении к Банку. Причину по адресу http://www.cbr.ru/scripts/XML_dynamic.asp я знаю, а эту - не догадался сохранить полученный (возможно в нем ошибка) файл с http://www.cbr.ru/scripts/XML_daily.asp. Кто знает?
И еще. Отображаются только курсы, без дат. Можно ли получить из этого ресурса дату этого курса или нет?
Например, по адресу http://www.cbr.ru/scripts/XML_dynamic.asp, я могу запросить курс по конкретной дате или за период. | |
| |
|
|
| |
|
|
| |
для: sim5
(07.01.2007 в 04:54)
| | | Если зайти на сайт и посмотреть http://www.cbr.ru/currency_base/daily.asp?C_month=01&C_year=2007&date_req=01%2F01%2F2007&d1=1, то с 31 декабря 2006 по 7 января 2007 можно увидеть следующее: Курсы валют за DD/MM/YYYY не зарегистрированы.
Скрипт курса валют находится немного в другом месте: http://www.cbr.ru/scripts/XML_daily.asp, а не /XML_dynamic.asp.
Это напоминает мне ситуацию с gmail, когда остановился счётчик места для почты. | |
| |
|
|
| |
|
|
| |
для: Саня
(07.01.2007 в 12:18)
| | | Скриптом http://www.cbr.ru/currency_base/daily.asp? пользовался год, обрубился буквально вчера. Еще с мая месяца, в запрсе увеличил период выбора курса, который сейчас равен 10 дням - по идее вполне хватает, для получения последней даты, а это было бы 21 декабря, однако почему-то нули стал получать.
А http://www.cbr.ru/currency_base/daily.asp? дату курса валюты не выдает? | |
| |
|
|
| |
|
|
| |
для: sim5
(07.01.2007 в 16:33)
| | | Каким скриптом вы пользуетесь?
> дату курса валюты не выдает?
Зайдите и посмотрите на параметры корневого тега
http://www.cbr.ru/scripts/XML_daily.asp?date_rec=07/01/2007 | |
| |
|
|
| |
|
|
| |
для: Саня
(07.01.2007 в 17:51)
| | | До этого пользовался этим, но без картинок :
<?
# File: usd2.php, v.1.0/20010803
# Скрипт для вывода информера по поводу курса доллара, установленного ЦБР
# (c) 2001, Mikhail Turenko, http://www.turenko.net, <mikhail@turenko.net>
# Использование: <IMG src="usd.php" width="88" height="41" border="0"/>
# Выводит PNG, размер выбирается автоматически
# строка "dd/mm/yyyy: 1USD=29.30RUR (+0.02)"
# Базовый URL скрипта на cbr.ru
$scripturl = 'http://www.cbr.ru/scripts/XML_dynamic.asp';
# Начальная дата для запроса (сегодня - 2 дня)
$date_1=date('d/m/Y', time()-172800);
# Конечная дата (чтобы учитывать завтра добавьте параметр time()+86400)
$date_2=date('d/m/Y');
# Таким образом, мы получим данные либо за 2, либо за 3 последних дня.
# За 2 - если на "сегодня" курс еще не выставили, иначе - за 3
# Код валюты в архиве данных cbr.ru
# код доллара R01235, код евро R01239
$currency_code='R01235';
# URL для запроса данных
$requrl = "{$scripturl}?date_req1={$date_1}&date_req2={$date_2}&VAL_NM_RQ={$currency_code}";
$doc = file($requrl);
$doc = implode($doc, '');
# инициализируем массив
$r = array();
# ищем <ValCurs>...</ValCurs>
if(preg_match("/<ValCurs.*?>(.*?)<\/ValCurs>/is", $doc, $m))
# а потом ищем все вхождения <Record>...</Record>
preg_match_all("/<Record(.*?)>(.*?)<\/Record>/is", $m[1], $r, PREG_SET_ORDER);
$m = array(); # его уже использовали, реинициализируем
$d = array(); # этот тоже проинициализируем
# Сканируем на предмет самых нужных цифр
for($i=0; $i<count($r); $i++) {
if(preg_match("/Date=\"(\d{2})\.(\d{2})\.(\d{4})\"/is", $r[$i][1],$m)) {
$dv = "{$m[1]}/{$m[2]}/{$m[3]}"; # Приводим дату в норм. вид
if(preg_match("/<Nominal>(.*?)<\/Nominal>.*?<Value>(.*?)<\/Value>/is", $r[$i][2], $m)) {
$m[2] = preg_replace("/,/",".",$m[2]);
$d[] = array($dv, $m[1], $m[2]);
}
}
}
$last = array_pop($d); # последний известный день
$prev = array_pop($d); # предпосл. известный день
$date = $last[0]; # отображаемая дата
$rate = sprintf("%.2f",$last[2]); # отображаемый курс
# отображаемое изменение курса, например, "+0.02"
$delta = (($last[2]>$prev[2])?"+":"").sprintf("%.2f",$last[2]-$prev[2]);
#echo("{$date}: 1USD={$rate}RUR ({$delta})<BR>");
$string = "{$date}: 1USD={$rate}RUR ({$delta})";
$h = ImageFontHeight(2)+2;
$w = ImageFontWidth(2)*strlen($string)+2;
header("Content-type: image/png"); # Отдаем HTTP-заголовок с типом данных
# Создаем пустое изображение
$im = @ImageCreate($w, $h) or die("Cannot do ImageCreate()");
# Создаем всякие цвета
$bg = ImageColorAllocate($im, 255, 255, 255);
$fg = ImageColorAllocate($im, 0, 0, 0);
$fg2 = ImageColorAllocate($im, 120, 0, 0);
$bdr = ImageColorAllocate($im, 224,224,224);
$bdr2 = ImageColorAllocate($im, 160,160,160);
ImageColorTransparent($im, $bg);
ImageString($im, 2, 1, 1, $string, $fg);
# Отдаем изображение на выход
ImagePNG($im);
# Освобождаем память из-под
ImageDestroy($im);
?>
|
| |
| |
|
|
| |
 1.8 Кб |
|
| |
для: sim5
(07.01.2007 в 20:07)
| | | Я бы рекомендовал воспользоваться этим скриптом: http://www.softtime.ru/scripts/valute.php. Правда результат возвращается не за промежуток а за один день. И возвращается в виде текста, а не картинки.
Если хотите картинкой, я прикрепил скрипт.
В следующий раз большие листинги кода прикрепляйте к сообщению в виде вложения.
PS
Это место улыбнуло )
$doc = file($requrl);
$doc = implode($doc, '');
|
| |
| |
|
|
| |
|
|
| |
для: Саня
(07.01.2007 в 21:01)
| | | Этот код взят из примера на sbr.ru. Картинка мне не нужна. Нужна дата, и главное знать, что за глюки происходят у них. Какой код использовать, чтобы была гарантия, что они либо его не езменят либо не вокнут новый. Ведь код предложенный (я уже писал) softtime, также дал ошибку, а спустя время заработал. | |
| |
|
|
| |
|
|
| |
для: sim5
(07.01.2007 в 21:22)
| | | Единственная очевидная причина - это глюки cbr.ru | |
| |
|
|
| |
|
|
| |
для: Саня
(07.01.2007 в 21:37)
| | | Полностью согласен, но как их обойти. Каку проверку, вернее чего, надо делать? Пока глючил код, который взял от softtime, надо было файл хоть сохранить и посмотреть что в нем пришло. А сейчас - ждать снова Дня победы или 2008, когда в Росси долго пьют. | |
| |
|
|
| |
|
|
| |
для: Саня
(07.01.2007 в 21:37)
| | | Неправда!!! cbr.ru не глючил, а просто не обновлял данные.... так все новогодние праздники он выдавал текущий курс на 30.12.06г и все работало без проблем... если считать что они просто не обновляли курс.... Вот посмотрите работу скрипта http://www.vzrosleem.ru/u-tel_sms_cron.php, только прошу не злоупотреблять, т.к. этот скрипт отправляет мне SMS с тем текстом что написан на: Переданные данные на телефон.... ну короче увидите результат на экране ....... скрипт курсы грузит с cbr.ru (доллар,евро, металлы) а погоду грузит с HMN.RU (город все меняется в переменных скрипта) и отправляет бесплатно на U-Tel с гисметео не стал грузить, т.к. для моего города он всегда сильно врет погоду... если интересует этот скрипт... пжл sms мне на http://smskopilka.ru/?info&id=10209 ... по прямому номеру не отвечу | |
| |
|
|
| |
|
|
| |
для: alwhite
(10.01.2007 в 00:36)
| | | Да и как их выдавать, если валютные торги не проводятся в новогодние каникулы и все биржи закрыты. | |
| |
|
|
| |
|
|
| |
для: cheops
(10.01.2007 в 01:22)
| | | Понятно, всем гулять охота. Но используя запрос валют по адресу http://www.cbr.ru/scripts/XML_dynamic.asp и обломившись в мае, я прописал период по курсу 10 дней. Работало до нового года - и облом.
Я делал так. Посетитель сайта, вначале получает ранее сохраненный курс валют из файла на сайте - если дата его сохранения и дата за который был установлен курс равны, то выводился курс из файла, если нет то запрос нового курса на sbr.ru и его запись в файл. В информер естественно выводилась дата установления курса, а не записи в файл. На новый год был получен курс 0:00 и БЕЗ ДАТЫ, по.тому и произошла ошибка. Я устроил проверку еще и на дату. На сайте пока используется этот же код и обновление курса получил только 10 января, хотя на mail.ru, например, видел новый уже за 9 число.
Пример от softtime, при пробе, выдал ошибку сразу, а заработал спустя минут 30, ну может чуть более. Кто знает, что в данном случае может быть причиной. Ну не охота глюков таких иметь вновь. | |
| |
|
|
| |
|
|
| |
для: sim5
(10.01.2007 в 05:12)
| | | Я же написал -- в моем скрипте все в норме и работало.... а на счет обновления курса на сайте: я дописываю необходимые процедуры для своего сайта(еще не выставил контент), так написал скрипт и сразу предусмотрел проверку дат, т.к. на cbr при неотправлении параметра даты или отправлении написанной с ошибкой(ну допустим не существующей или прямой ссылки без указания названия парметра $data) сайт автоматом выдает последний известный сайтом курс, а при автообновлении курса на сайте -- проверяешь конкретную дату, если дата выданного запроса ниже дапустим на 3 дня(т.е. позавчера), то грузим для использования в инет-магазине вручную установленный курс, а загруженный автоматом умножаем на 0.03(3%) для получения внутреннего курса инет магазина.... Как со мной связаться по поводу данного скрипта...написано в предыдущем моем сообщении... еще написал себе скрипт поиска по сайту с эвристическим анализатором... | |
| |
|
|
| |
|
|
| |
для: alwhite
(10.01.2007 в 05:23)
| | | Не понял. Мне отвечает автор скрипта который я использую? И теперь гарантия, что проблем не будет и можно успокоиться? | |
| |
|
|
| |
|
|
| |
для: sim5
(10.01.2007 в 06:29)
| | | Ytn я не автор скрипта который Вы используете, я автор своего скрипта(но все-равно подобного Вашему).... Просто хочу доказать, что cbr.ru не глючил и не глючит, а прекрасно работает | |
| |
|
|
| |
|
|
| |
для: alwhite
(10.01.2007 в 14:56)
| | | А я губу закатал. Да я не хотел ЦБ родной обижать, но глюк наблюдать, счастье имел дважды. Я тоже говорю, что не я их смоделировал. | |
| |
|
|
|