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