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

Форум PHP

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

 

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

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

тема: скрипт погоды
 
 автор: m@rchello   (05.02.2007 в 11:52)   письмо автору
 
 

подскажите пожалуйсто как сделать на сайте погоду, так что бы человек заходящий на сайт видел погоду именно в своём городе! Но при этом пользователи могут быть и из границы.
Тоесть кто то заходит с москвы и загружается погода в москве а если с парижа то погода в париже!?
Подскажите пожалуйсто реально ли это и как это осуществить???

   
 
 автор: retsoul   (05.02.2007 в 12:04)   письмо автору
 
   для: m@rchello   (05.02.2007 в 11:52)
 

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

   
 
 автор: bronenos   (05.02.2007 в 12:05)   письмо автору
 
   для: retsoul   (05.02.2007 в 12:04)
 

а если ориентироваться на IP адрес

   
 
 автор: retsoul   (05.02.2007 в 12:09)   письмо автору
 
   для: bronenos   (05.02.2007 в 12:05)
 

можно,
тогда остаётся узнать откуда предоставлен доступ в интернет))

   
 
 автор: bronenos   (05.02.2007 в 12:08)   письмо автору
 
   для: retsoul   (05.02.2007 в 12:04)
 

Или javascript передать время, затем получить гринвич, сравнить, в зависимости от разницы подобрать ближайший город и вывести...

   
 
 автор: bronenos   (05.02.2007 в 12:08)   письмо автору
 
   для: retsoul   (05.02.2007 в 12:04)
 

Или javascript передать время, затем получить гринвич, сравнить, в зависимости от разницы подобрать ближайший город и вывести...

   
 
 автор: retsoul   (05.02.2007 в 12:12)   письмо автору
 
   для: bronenos   (05.02.2007 в 12:08)
 

разброс получится очень большой по меридиану, тогда ещё не плохо узнаваь язык пользователя, чтобы сократить исходные данные на поиск

   
 
 автор: m@rchello   (05.02.2007 в 13:12)   письмо автору
 
   для: retsoul   (05.02.2007 в 12:12)
 

впринципе город будет указываться при регистрации! и страна тоже!

   
 
 автор: bronenos   (05.02.2007 в 13:13)   письмо автору
 
   для: m@rchello   (05.02.2007 в 13:12)
 

Ну тогда проблем нет - использовать регистрационную информацию

   
 
 автор: m@rchello   (05.02.2007 в 13:23)   письмо автору
 
   для: bronenos   (05.02.2007 в 13:13)
 

Сообственно в этом и проблема! Я не знаю как и откуда вытягивать погоду!!!:-(

   
 
 автор: Loki   (05.02.2007 в 14:05)   письмо автору
 
   для: m@rchello   (05.02.2007 в 13:23)
 

http://weather.yandex.ru/
http://wwwa.accuweather.com/
http://www.gismeteo.ru/
http://www.weather.com/
http://meteoinfo.ru/

   
 
 автор: m@rchello   (05.02.2007 в 14:41)   письмо автору
 
   для: Loki   (05.02.2007 в 14:05)
 

А как от туда со входными параметрами страны и города(на английском языке) погоду уже непосредственно на сайт???

   
 
 автор: Loki   (05.02.2007 в 15:40)   письмо автору
 
   для: m@rchello   (05.02.2007 в 14:41)
 

через xml

   
 
 автор: m@rchello   (05.02.2007 в 15:59)   письмо автору
 
   для: Loki   (05.02.2007 в 15:40)
 

а примерчик не могли бы накинуть???

   
 
 автор: Loki   (05.02.2007 в 16:05)   письмо автору
 
   для: m@rchello   (05.02.2007 в 15:59)
 

Мог бы, но он большой и малопонятный

   
 
 автор: m@rchello   (05.02.2007 в 16:23)   письмо автору
 
   для: Loki   (05.02.2007 в 16:05)
 

если можете то выложите пожалуйсто , я его поковыряю и разберусь! Очень нужно!

   
 
 автор: Loki   (05.02.2007 в 16:57)   письмо автору
 
   для: m@rchello   (05.02.2007 в 16:23)
 

<?
$town_id
=26063//питер
 
$w_res=array();
  
$xml=file_get_contents("http://informer.gismeteo.ru/xml/{$town_id}_1.xml");
  
$dom = new DOMDocument();
  
$dom->loadXML($xml);
  
$dom->validateOnParse true;
  
  
$town_name=$dom->getElementsByTagName('TOWN');
  
$town_name=urldecode($town_name->item(0)->getAttribute('sname'));
  
  
$weater_tmp=$dom->getElementsByTagName('FORECAST'); 

$i=0;
  foreach (
$weater_tmp as $weather)
  {
   
$phenomena=$weather->getElementsByTagName('PHENOMENA')->item(0);  
   
$pressure=$weather->getElementsByTagName('PRESSURE')->item(0); 
   
$temperature=$weather->getElementsByTagName('TEMPERATURE')->item(0);  
   
$wind=$weather->getElementsByTagName('WIND')->item(0); 
   
$relwet=$weather->getElementsByTagName('RELWET')->item(0);  
   
$heat=$weather->getElementsByTagName('HEAT')->item(0);  
   
   
$w_res[$i]['town']=$town_id;
   
$w_res[$i]['town_name']=$town_name;
   
   
$w_res[$i]['tod']=$weather->getAttribute('tod');
   
$w_res[$i]['w_time']=$weather->getAttribute('year')."-".$weather->getAttribute('month')."-".$weather->getAttribute('day')." ".$weather->getAttribute('hour').":00:00";

   
$w_res[$i]['cloudiness']=$phenomena->getAttribute('cloudiness');
   
$w_res[$i]['precipitation']=$phenomena->getAttribute('precipitation');
   
$w_res[$i]['rpower']=$phenomena->getAttribute('rpower');
   
$w_res[$i]['spower']=$phenomena->getAttribute('spower');

   
$w_res[$i]['pressure_max']=$pressure->getAttribute('max');
   
$w_res[$i]['pressure_min']=$pressure->getAttribute('min');

   
$w_res[$i]['temp_max']=$temperature->getAttribute('max');
   
$w_res[$i]['temp_min']=$temperature->getAttribute('min');

   
$w_res[$i]['wind_max']=$wind->getAttribute('max');
   
$w_res[$i]['wind_min']=$wind->getAttribute('min');
   
$w_res[$i]['wind_direction']=$wind->getAttribute('direction');

   
$w_res[$i]['wet_max']=$relwet->getAttribute('max');
   
$w_res[$i]['wet_min']=$relwet->getAttribute('min');

   
$w_res[$i]['heat_max']=$heat->getAttribute('max');
   
$w_res[$i]['heat_min']=$heat->getAttribute('min');

   
$i++;
  }
 }

$weather=array();
$weather['cloudiness']=array(0=>"ясно"1=>"малооблачно"2=>"облачно"3=>"пасмурно");
$weather['precipitation']=array(4=>"дождь"5=>"ливень"6=>"снег"7=>"снег"8=>"гроза"9=>"нет данных"10=>"без осадков");
$weather['rpower']=array(0=>"возможен"1=>""); //дождь/снег
$weather['spower']=array(0=>"возможна"1=>""); //гроза
$weather['tod']=array(0=>"ночь"1=>"утро"2=>"день"3=>"вечер");
$weather['wind']=array(0=>"северный"1=>"северо-восточный"2=>"восточный"3=>"юго-восточный"4=>"южный"5=>"юго-западный"6=>"западный"7=>"северо-западный");

echo 
$w_res[0]['town_name']."<br /><br />";

for (
$i=0$i<4$i++)
{
 echo 
"Дата: ".$w_res[$i]['w_time'].", ".$weather['tod'][$w_res[$i]['tod']]."<br />";
 echo 
"Температура: ".(($w_res[$i]['temp_max']<0) ? ($w_res[$i]['temp_max']." ".$w_res[$i]['temp_min']) : ($w_res[$i]['temp_min']." ".$w_res[$i]['temp_max']))."<br />";
 echo 
"Давление: ".$w_res[$i]['pressure_min']."-".$w_res[$i]['pressure_max']."мм р.ст.<br />";
 echo 
"Влажность: ".$w_res[$i]['wet_min']."%-".$w_res[$i]['wet_max']."%<br />";
 echo 
"Ветер ".$weather['wind'][$w_res[$i]['wind_direction']]." ".$w_res[$i]['wind_min']."-".$w_res[$i]['wind_max']."м/с<br />";
 echo 
$weather['cloudiness'][$w_res[$i]['cloudiness']].", ";
 if(
$w_res[$i]['precipitation']<=7)
 {
  echo 
$weather['rpower'][$w_res[$i]['rpower']]." ".$weather['precipitation'][$w_res[$i]['precipitation']]."<br />";
 }
 elseif(
$w_res[$i]['precipitation']==8)
 {
  echo 
$weather['spower'][$w_res[$i]['rpower']]." ".$weather['precipitation'][$w_res[$i]['precipitation']]."<br />";
 }
 elseif(
$w_res[$i]['precipitation']==10)
 {
  echo 
$weather['precipitation'][$w_res[$i]['precipitation']]."<br />";
 }
 echo 
"Комфорт ".(($w_res[$i]['heat_max']<0) ? ($w_res[$i]['heat_max']." ".$w_res[$i]['heat_min']) : ($w_res[$i]['heat_min']." ".$w_res[$i]['heat_max']))." градусов<br /><br /><br />";

   
Rambler's Top100
вверх

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