Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт Gismeteo
 
 автор: Уфимец   (08.11.2010 в 20:47)   письмо автору
3.9 Кб
 
 

Набросал скрипт вывода погоды с сайта Gismeteo, но вот то как работает не совсем устраивает!
Проблема в том что,скрипт проверяет время последнего обновления XML файла,и если он не актуален загружает его с сервера, и тут же выводит, ну вообщем то проблема в том, что только что обновившийся XML не выводится,а выводится пустая страница. Прошу помощи!!! HELP
Скрипт во вложении

  Ответить  
 
 автор: Уфимец   (09.11.2010 в 08:06)   письмо автору
 
   для: Уфимец   (08.11.2010 в 20:47)
 

Вопрос все еще актуален, помогите плз!!!

  Ответить  
 
 автор: Slo_Nik   (09.11.2010 в 10:20)   письмо автору
3.8 Кб
 
   для: Уфимец   (09.11.2010 в 08:06)
 

Посмотрите архив, изменил немного файлы index.php и select_city.tpl
Кое что закомментировал, кое что добавил.....
Это не идеальное решение, даже не решение, а подгонка результата, но может Вам поможет доработать Ваш скрипт.

И не в тему, откажитесь от использования коротких тегов php и на момент написания и отладки скрипта используйте всегда error_reporting(E_ALL)

p.s. изменил пути к файлам, так что меняйте на свои

  Ответить  
 
 автор: Уфимец   (09.11.2010 в 15:03)   письмо автору
 
   для: Slo_Nik   (09.11.2010 в 10:20)
 


// перезагрузка страницы после обновления файла xml
               echo "<html><head><meta http-equiv='refresh' content='0; index.php?go=go'></head></html>";


простое и надежное решение=)))) Спасибо! Я что то даже и не подумал на счет перезагрузки страницы

  Ответить  
 
 автор: Slo_Nik   (09.11.2010 в 17:17)   письмо автору
 
   для: Уфимец   (09.11.2010 в 15:03)
 

там не только в этом дело было, ещё в if else...

  Ответить  
 
 автор: Уфимец   (09.11.2010 в 19:51)   письмо автору
 
   для: Slo_Nik   (09.11.2010 в 17:17)
 

Пришел домой потестил скрипт,проблема осталась =(((( Вот сейчас точно не догоняю что не так????

  Ответить  
 
 автор: Уфимец   (11.11.2010 в 10:04)   письмо автору
 
   для: Уфимец   (09.11.2010 в 19:51)
 

не могу понять в чем же причина????

  Ответить  
 
 автор: Trianon   (11.11.2010 в 10:41)   письмо автору
 
   для: Уфимец   (11.11.2010 в 10:04)
 

операция copy, которая стоит в конце скрипта, это нормально?

  Ответить  
 
 автор: Лена   (11.11.2010 в 11:07)   письмо автору
 
   для: Уфимец   (11.11.2010 в 10:04)
 


            //Если файл обновлялся последний раз более 10 минут назад
            if((time()-$file_update)>30)


Цифра, с которой вы сравниваете, это что? минуты? секунды?
Должны ж быть секунды... И тогда никак 30 не получается...

  Ответить  
 
 автор: Уфимец   (11.11.2010 в 14:40)   письмо автору
 
   для: Лена   (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:42)   письмо автору
 
   для: Уфимец   (11.11.2010 в 14:40)
 

Если я что то не так делаю покажите плз на мои ошибки конкретно =)))

  Ответить  
 
 автор: Trianon   (11.11.2010 в 14:47)   письмо автору
 
   для: Уфимец   (11.11.2010 в 14:40)
 

ну и где //далее выводим во второй ветви алгоритма?

  Ответить  
 
 автор: Уфимец   (11.11.2010 в 14:54)   письмо автору
 
   для: Trianon   (11.11.2010 в 14:47)
 

вывожу пример

<?

//Путь к корню
$dir="../..";


     if(empty(
$_REQUEST['go']))
     {
         
//Выводим форму
         
include_once($dir."/modules/weather/templates/select_city.tpl");
        
//Если не нажата кнопка выводим форму

        
print"Для того чтобы узнать погоду, нужно выбрать из списка желаемый населенный пункт и нажать &laquo; Запросить &raquo;<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 ("Ошибка при загрузке файла с погодой");
        }

     }



?>

  Ответить  
 
 автор: Trianon   (11.11.2010 в 14:56)   письмо автору
 
   для: Уфимец   (11.11.2010 в 14:54)
 

вот сами с таким примером и ...хм... имейте дело.
За каким хреном ленту нужно было рвать?

  Ответить  
 
 автор: Уфимец   (11.11.2010 в 15:02)   письмо автору
 
   для: Trianon   (11.11.2010 в 14:56)
 

Прошу прощения за Хм =))) Код не читаемый??? Посмотрите исходник в архиве в первом сообщении тогда

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования