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

Форум PHP

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

 

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

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

тема: xml с нуля.
 
 автор: Рома   (26.05.2009 в 23:03)   письмо автору
 
 

Люди добрые, помогите пожалуйста.

Хочу выставить у себя на сайте погоду, только вот предлагаемые банеры ну ни как не подходят. Оформления банеров оставляют желать лучшего, да и в дизайн не особо вписываются.

Меня интересует алгоритм моих действий, в процессе которых я превращу этот xml файл http://informer.gismeteo.ru/xml/34731.xml в этот http://seclub.org/mod/gism.php?t=34731

Все что я знаю - это что мне нужно четыре раза в сутки забрать xml - файл, как - то обработать и поместить в базу данных, после чего я со спокойной совестью и с быстрой скоростью буду радовать своих пользователей свежим прогнозом погоды.

Примеров я почитал массу, но что - то не але. многое на классах, а я на них - как баран на новые ворота.

Че почитать, в каких функциях разбираться?
Только без классов, я и без них нормально обхожусь.

  Ответить  
 
 автор: mihdan   (27.05.2009 в 11:03)   письмо автору
 
   для: Рома   (26.05.2009 в 23:03)
 

Во-первых, ссылка первая битая
Во-вторых, читайте про работу РНР с XML - благо информации полно

  Ответить  
 
 автор: Петр   (27.05.2009 в 18:53)   письмо автору
 
   для: Рома   (26.05.2009 в 23:03)
 

<?php
// Загрузка XML-файла;
$xml file_get_contents("http://www.сайт.ru/файл.xml");
$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) {
    
// Дата;
    
$weather[$item]['date'] = $value->getAttribute('year').'-'.preg_replace("/(^[1-9]{1,1}$)/""0\$1"$value->getAttribute('month')).'-'.$value->getAttribute('day');
    
// Время суток;
    
$weather[$item]['tod'] = $tod[$value->getAttribute('tod')];
    
// Температура;
    
$temperature $value->getElementsByTagName('TEMPERATURE')->item(0);
    
$weather[$item]['temperature'] = $temperature->getAttribute('min').'..'.$temperature->getAttribute('max');
    
// Давление;
    
$pressure $value->getElementsByTagName('PRESSURE')->item(0);
    
$weather[$item]['pressure'] = $pressure->getAttribute('min').'..'.$pressure->getAttribute('max');
    
// Влажность;
    
$relwet $value->getElementsByTagName('RELWET')->item(0);
    
$weather[$item]['relwet'] = $relwet->getAttribute('min').'-'.$relwet->getAttribute('max');
    
// Ветер;
    
$wind $value->getElementsByTagName('WIND')->item(0);
    
$weather[$item]['wind'] = $direction[$wind->getAttribute('direction')].', '.$wind->getAttribute('min').'..'.$wind->getAttribute('max');
    
// Осадки;
    
$phenomena $value->getElementsByTagName('PHENOMENA')->item(0);
    
$weather[$item]['phenomena'] = $cloudiness[$phenomena->getAttribute('cloudiness')].', '.$precipitation[$phenomena->getAttribute('precipitation')];
}
?>

Далее делаем с переменной $weather все, что пожелаете. Например так:
- Каждый час (4 часа) запускается Cron-задание с этим кодом и записывает в БД;
- Выводите из БД в удобном виде (получается без тормозов и неперегружаете чужой сервер)
P.S. не забудте указать ссылку на источник погоды

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

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