|
 3.9 Кб |
|
| Набросал скрипт вывода погоды с сайта Gismeteo, но вот то как работает не совсем устраивает!
Проблема в том что,скрипт проверяет время последнего обновления XML файла,и если он не актуален загружает его с сервера, и тут же выводит, ну вообщем то проблема в том, что только что обновившийся XML не выводится,а выводится пустая страница. Прошу помощи!!! HELP
Скрипт во вложении | |
|
|
|
|
|
|
|
для: Уфимец
(08.11.2010 в 20:47)
| | Вопрос все еще актуален, помогите плз!!! | |
|
|
|
|
 3.8 Кб |
|
|
для: Уфимец
(09.11.2010 в 08:06)
| | Посмотрите архив, изменил немного файлы index.php и select_city.tpl
Кое что закомментировал, кое что добавил.....
Это не идеальное решение, даже не решение, а подгонка результата, но может Вам поможет доработать Ваш скрипт.
И не в тему, откажитесь от использования коротких тегов php и на момент написания и отладки скрипта используйте всегда error_reporting(E_ALL)
p.s. изменил пути к файлам, так что меняйте на свои | |
|
|
|
|
|
|
|
для: Slo_Nik
(09.11.2010 в 10:20)
| |
// перезагрузка страницы после обновления файла xml
echo "<html><head><meta http-equiv='refresh' content='0; index.php?go=go'></head></html>";
|
простое и надежное решение=)))) Спасибо! Я что то даже и не подумал на счет перезагрузки страницы | |
|
|
|
|
|
|
|
для: Уфимец
(09.11.2010 в 15:03)
| | там не только в этом дело было, ещё в if else... | |
|
|
|
|
|
|
|
для: Slo_Nik
(09.11.2010 в 17:17)
| | Пришел домой потестил скрипт,проблема осталась =(((( Вот сейчас точно не догоняю что не так???? | |
|
|
|
|
|
|
|
для: Уфимец
(09.11.2010 в 19:51)
| | не могу понять в чем же причина???? | |
|
|
|
|
|
|
|
для: Уфимец
(11.11.2010 в 10:04)
| | операция copy, которая стоит в конце скрипта, это нормально? | |
|
|
|
|
|
|
|
для: Уфимец
(11.11.2010 в 10:04)
| |
//Если файл обновлялся последний раз более 10 минут назад
if((time()-$file_update)>30)
|
Цифра, с которой вы сравниваете, это что? минуты? секунды?
Должны ж быть секунды... И тогда никак 30 не получается... | |
|
|
|
|
|
|
|
для: Лена
(11.11.2010 в 11:07)
| | Возьмите к разбору вариант который содержится в первом моем сообщении. Там значение не 30, а 300 ,тобишь 5 минут.
а если касаться copy в конце, так он же идет из условия
//Если файл существует
if(file_exists($dir_xml_file))
{
//то проверяем время его последнего обновления
//если устарел файл то обновляем
//далее выводим
}
else
{
//иначе загружаем его с gismeteo.ru
copy("http://informer.gismeteo.ru/xml/".$id_city.".xml",$dir_xml_file) or die ("Ошибка при загрузке файла с погодой");
}
|
| |
|
|
|
|
|
|
|
для: Уфимец
(11.11.2010 в 14:40)
| | Если я что то не так делаю покажите плз на мои ошибки конкретно =))) | |
|
|
|
|
|
|
|
для: Уфимец
(11.11.2010 в 14:40)
| | ну и где //далее выводим во второй ветви алгоритма? | |
|
|
|
|
|
|
|
для: Trianon
(11.11.2010 в 14:47)
| | вывожу пример
<?
//Путь к корню
$dir="../..";
if(empty($_REQUEST['go']))
{
//Выводим форму
include_once($dir."/modules/weather/templates/select_city.tpl");
//Если не нажата кнопка выводим форму
print"Для того чтобы узнать погоду, нужно выбрать из списка желаемый населенный пункт и нажать « Запросить »<br /><br />\r\n";
}
else
{
//Иначе продолжаем
//Проверяем передан ли ID города
$id_city=$_POST['id_city'];//Id населенного пункта пришедшего из формы
//Если Id не задан
if(empty($id_city)){$id_city = "28722_1";}//ID города Уфа
//Проверяем,если ли xml Файл с переданным id
$dir_xml_file="xml/".$id_city.".xml";
//Если файл существует
if(file_exists($dir_xml_file))
{
//если файл существует, то проверяем время его последнего обновления
$file_update=filemtime($dir_xml_file);
//Если файл обновлялся последний раз более 5 минут назад
if((time()-$file_update)>300)
{
//то обновляем его
copy("http://informer.gismeteo.ru/xml/".$id_city.".xml",$dir_xml_file) or die ("Ошибка при обновлении файла с погодой");
}
else
{
//Выводим форму
include_once($dir."/modules/weather/templates/select_city.tpl");
//Выводим информацию о последнем обновлении файла
print "Последнее обновление: ".date("d.m.y / H:i:s",$file_update)."<br /><br />\r\n";
//Если файл еще свежий то начинаем разбор его xml
///////////////////////////////////////
///// Обработка XML файла /////////////
///////////////////////////////////////
$xml = file_get_contents($dir_xml_file);
$dom = new DOMDocument();
$dom->loadXML($xml);
$dom->validateOnParse = true;
$data = $dom->getElementsByTagName('FORECAST');
// Обозначения;
$tod = array(0=>"Ночь", 1=>"Утро", 2=>"День", 3=>"Вечер");
$direction = array(0=>"Северный", 1=>"Северо-восточный", 2=>"Восточный", 3=>"Юго-восточный", 4=>"Южный", 5=>"Юго-западный", 6=>"Западный", 7=>"Северо-западный");
$cloudiness = array(0=>"Ясно", 1=>"Малооблачно", 2=>"Облачно", 3=>"Пасмурно");
$precipitation = array(4=>"дождь", 5=>"ливень", 6=>"снег", 7=>"снег", 8=>"гроза", 9=>"нет данных", 10=>"без осадков");
// Обход массива;
foreach ($data as $item=>$value)
{
// Дата;
print $weather[$item]['date'] = $value->getAttribute('day').'-'.preg_replace("/(^[1-9]{1,1}$)/", "0\$1", $value->getAttribute('month')).'-'.$value->getAttribute('year')."<br />";
// Время суток;
print $weather[$item]['tod'] = $tod[$value->getAttribute('tod')]."<br />";
// Температура;
$temperature = $value->getElementsByTagName('TEMPERATURE')->item(0);
print "Температура: ".$weather[$item]['temperature'] = $temperature->getAttribute('min').'..'.$temperature->getAttribute('max')." °C<br />";
// Давление;
$pressure = $value->getElementsByTagName('PRESSURE')->item(0);
print "Давление: ".$weather[$item]['pressure'] = $pressure->getAttribute('min').'..'.$pressure->getAttribute('max')." мм.рт.ст.<br />";
// Влажность;
$relwet = $value->getElementsByTagName('RELWET')->item(0);
print "Влажность: ".$weather[$item]['relwet'] = $relwet->getAttribute('min').'-'.$relwet->getAttribute('max')." %<br />";
// Ветер;
$wind = $value->getElementsByTagName('WIND')->item(0);
print "Ветер: ".$weather[$item]['wind'] = $direction[$wind->getAttribute('direction')].', '.$wind->getAttribute('min').'..'.$wind->getAttribute('max')." м/с<br />";
// Осадки;
$phenomena = $value->getElementsByTagName('PHENOMENA')->item(0);
print "Осадки: ".$weather[$item]['phenomena'] = $cloudiness[$phenomena->getAttribute('cloudiness')].', '.$precipitation[$phenomena->getAttribute('precipitation')]."<br /><br />\r\n";
}
}
}
else
{
//то загружаем его с gismeteo.ru
copy("http://informer.gismeteo.ru/xml/".$id_city.".xml",$dir_xml_file) or die ("Ошибка при загрузке файла с погодой");
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Уфимец
(11.11.2010 в 14:54)
| | вот сами с таким примером и ...хм... имейте дело.
За каким хреном ленту нужно было рвать? | |
|
|
|
|
|
|
|
для: Trianon
(11.11.2010 в 14:56)
| | Прошу прощения за Хм =))) Код не читаемый??? Посмотрите исходник в архиве в первом сообщении тогда | |
|
|
|