Сообщение Notice: Trying to get property of non-object в функции eval() modules/php/php.module(80) : eval()'d code

Главные вкладки

Аватар пользователя Almiol Almiol 19 декабря 2013 в 22:28

Доброго времени суток. Возникла необходимость получить в пхп переменные актуальные курсы валют. Вот такой код я вывожу на странице:

<?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" не работоспособность это конечно не влияет и впринципе можно убрать эти предупреждения со страницы, но все же хотелось бы разобраться, что не так.
Прошу вашей помощи. Заранее спасибо.

Комментарии

Аватар пользователя drupby drupby 19 декабря 2013 в 22:56

"Almiol" wrote:
что не так.

с точки зрения друпала то , что ты написал - это говнокод
это все надо писать в своем модуле
посылать каждый раз при загрузке страницы из шаблона запросы на сторонний ресурс - это феерический пипец (мягко говоря)
данные нужно кешировать , по крону чистится кеш и данные заново получаются
потом эти данные нужно записать в какую то переменную в препроцессе и в шаблоне вывести ее
как вариант создать свой блок и туда выводить эти данные

Аватар пользователя Almiol Almiol 19 декабря 2013 в 23:15

"drupby" wrote:
с точки зрения друпала то , что ты написал - это говнокод
это все надо писать в своем модуле
посылать каждый раз при загрузке страницы из шаблона запросы на сторонний ресурс - это феерический пипец (мягко говоря)
данные нужно кешировать , по крону чистится кеш и данные заново получаются
потом эти данные нужно записать в какую то переменную в препроцессе и в шаблоне вывести ее
как вариант создать свой блок и туда выводить эти данные

Ну впринципе я в этом отношение согласен с друпалом. Понимаю, что каждый раз при загрузке странице делать эти действия не к чему, в то время как мне достаточно получать эти данные раз в сутки. Но увы знаний не хватает сделать иначе. Может быть кинетесь в меня ссылочкой на добротную статью где описываются данные действия?