|
|
|
| Люди добрые, помогите пожалуйста.
Хочу выставить у себя на сайте погоду, только вот предлагаемые банеры ну ни как не подходят. Оформления банеров оставляют желать лучшего, да и в дизайн не особо вписываются.
Меня интересует алгоритм моих действий, в процессе которых я превращу этот xml файл http://informer.gismeteo.ru/xml/34731.xml в этот http://seclub.org/mod/gism.php?t=34731
Все что я знаю - это что мне нужно четыре раза в сутки забрать xml - файл, как - то обработать и поместить в базу данных, после чего я со спокойной совестью и с быстрой скоростью буду радовать своих пользователей свежим прогнозом погоды.
Примеров я почитал массу, но что - то не але. многое на классах, а я на них - как баран на новые ворота.
Че почитать, в каких функциях разбираться?
Только без классов, я и без них нормально обхожусь. | |
|
|
|
|
|
|
|
для: Рома
(26.05.2009 в 23:03)
| | Во-первых, ссылка первая битая
Во-вторых, читайте про работу РНР с XML - благо информации полно | |
|
|
|
|
|
|
|
для: Рома
(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. не забудте указать ссылку на источник погоды | |
|
|
|