Доброго времени суток. Возникла необходимость получить в пхп переменные актуальные курсы валют. Вот такой код я вывожу на странице:
<?php
$arrNom;
$arrZn;
$usdKurs = 0;
$uahKurs = 0;
$dateKurs = date("d/m/Y"); // Сегодняшняя дата в необходимом формате
$linkKurs = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$dateKurs"; // Ссылка на XML-файл с курсами валют
$contentKurs = file_get_contents($linkKurs); // Скачиваем содержимое страницы
$domKurs = new domDocument("1.0", "cp1251"); // Создаём DOM
$domKurs->loadXML($contentKurs); // Загружаем в DOM XML-документ
$rootKurs = $domKurs->documentElement; // Берём корневой элемент
$childsKurs = $rootKurs->childNodes; // Получаем список дочерних элементов
$dataKurs = array(); // Набор данных
for ($i = 0; $i < $childsKurs->length; $i++) {
$childsKurs_new = $childsKurs->item($i)->childNodes; // Берём дочерние узлы
for ($j = 0; $j < $childsKurs_new->length; $j++) {
/* Ищем интересующие нас валюты */
$el = $childsKurs_new->item($j);
$codeKurs = $el->nodeValue;
if (($codeKurs == "USD") || ($codeKurs == "UAH")) $dataKurs[] = $childsKurs_new; // Добавляем необходимые валюты в массив
}
}
/* Перебор массива с данными о валютах */
for ($i = 0; $i < count($dataKurs); $i++) {
$listKurs = $dataKurs[$i];
for ($j = 0; $j < $listKurs->length; $j++) {
$el = $listKurs->item($j);
/* Выводим курсы валют */
if ($el->nodeName == "Nominal") $arrNom[] = $el->nodeValue;
elseif ($el->nodeName == "Value") $arrZn[] = $el->nodeValue;
}
}
$tempZn = str_replace(',','.',$arrZn[0]);
$usdKurs = $tempZn/$arrNom[0];
$tempZn = str_replace(',','.',$arrZn[1]);
$uahKurs = $tempZn/$arrNom[1];
?>
Работает все как надо, но вылезают предупреждения: "Notice: Trying to get property of non-object в функции eval() modules/php/php.module(80) : eval()'d code" не работоспособность это конечно не влияет и впринципе можно убрать эти предупреждения со страницы, но все же хотелось бы разобраться, что не так.
Прошу вашей помощи. Заранее спасибо.
Комментарии
код писать научился, а ошибки разбирать нет. странно.
с точки зрения друпала то , что ты написал - это говнокод
это все надо писать в своем модуле
посылать каждый раз при загрузке страницы из шаблона запросы на сторонний ресурс - это феерический пипец (мягко говоря)
данные нужно кешировать , по крону чистится кеш и данные заново получаются
потом эти данные нужно записать в какую то переменную в препроцессе и в шаблоне вывести ее
как вариант создать свой блок и туда выводить эти данные
Ну впринципе я в этом отношение согласен с друпалом. Понимаю, что каждый раз при загрузке странице делать эти действия не к чему, в то время как мне достаточно получать эти данные раз в сутки. Но увы знаний не хватает сделать иначе. Может быть кинетесь в меня ссылочкой на добротную статью где описываются данные действия?
вот http://xandeadx.ru/blog/drupal/663 только там погода парсится с яндекс xml
Спасибо за помощь. Почитаю, поразбираюсь.