Погодный информер с jquery, php и mysql

Опубликовано admin - пт, 07/10/2009 - 09:13
Изображение
Модифицированный парсер погоды для определенного города, без jQuery..

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

Для достижения нашей цели нам понадобится:

 

База ip адресов состоит из нескольких блоков ip адресов. Первый блок - основной, содержится в файле cidr_ru_master_index.db. Второй блок ip адресов - дополнительный, он содержится в файле cidr_ru_slave_index.db в нём конкретезируется информация по ip адресам. Зачем два разных файла - поясню простым языком, первый содержит границы ip адресов для каждого региона, второй в рамках первого конкретизирует все ip адреса определённого региона. В первом содержаться ещё дополнительные данные, которые нам, для погодного информера не интересны.

Итак, во-первых, Вы скачали файл db_files.tar.gz, распакуйте его, в нем содержится ещё один файл - cidr_ru_block.txt, он дублирует оба файла, поэтому он нам не понадобится.

Зачем нам нужны файлы cidr_ru_master_index.db и cidr_ru_slave_index.db? С помощью этих фалов мы будем определять место расположения нашего пользователя, его адрес. Адрес будет определен центральным городом его субъекта. В Yandex и Rambler то же самое. Там пока не придумали как сделать погоду для точных городов пользователей?

Итак как мы будем использовать указанные файлы - очень просто, распарсим их в базу mysql, чтоб искалось быстрее. По крайней мере в моём случае искать по базе оказалось на много быстрее, чем по строчкам в файле.

Обе таблицы будут выглядеть следующим образом:

Скрипт на php, который разбирает файлы следующий:

По поводу скрипта предупреждаю, на хостинге вызовет ошибку Fatal error: Allowed memory size..... Поэтому советую создать базу данных на локальной машине, установив параметр php_value memory_limit в php.ini побольше его стандартного значения, после чего дамп mysql импортировать на хостинг. Таблицы занимают около 15 mb.

Теперь вроде бы с ip мы разобрались, перейдём к сервису xml 1.2 от замечательного сайта http://weather.co.ua/services/ .

Сервис предоставляется бесплатно. Предоставляет он следующее - несколько файлов на php и несколько файлов xml. Нас интересуют следующие файлы - import_current.php, import_forecast.php, config.inc.php, common.inc.ph. Первые два - импортируют данные из xml в базу данных mysql, config.inc.php - настройки для подключения к базе данных, последний содержит функции для разбора xml.

Для импорта погодных данных Вам понадобится следующие таблицы sql:

 

Самые для нас нужные - weather_current и weather_forecast. Эти таблицы я использую для создания погодного информера, две первые таблицы с сайта http://weather.co.ua вовсе не понадобились. Для них важны два скрипта import_current.php и import_forecast.php. Скрипт import_current.php нужен для отображения текущей погоды:

Скрипт import_forecast.php, нужен для отображения погоды на будущие 5 дней.

В обеих таблицах непонятным, скорее всего, будет запрос INSERT … ON DUPLICATE KEY UPDATE Он означает, что если не будет найдено ни одной записи, то будет добавлена новая, иначе будет обнавлена предыдущая запись.

Остальные функции можете посмотреть в файле common.inc.php.

Итак мы пришли к следующему - у Вас есть две таблицы с ip адресами - geo, master, две таблицы с данными о погоде - weather_forecast, weather_current. Осталось написать скрипт определяющий ip посетителя и выводящий соответсвующий прогноз для определенного города.

Приступим к нему, он будет называться base.php:

В скрипте достаточно комментариев, скрипт выводит данные из таблиц с использованием другого скрипта pogoda.php. Его содержание следующее:

Так же как и прежний скрипт он не предоставляет сложности, для его понимания нужен лишь скрипт city.php. Весь скрипт я приводить не буду, укажу лишь образец первых строк, весь скрипт вы можете скачать внизу страницы со всем архивом.

Таким образом с помощью ip мы определим центр краевой,областной для пользователя вашего сайта. И передадим его скрипту base.php, который в свою очередь выведет соответсвующую информацию (SELECT * FROM weather_current WHERE city_id='.$url).

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

Пример работы!

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

Теги

Оценка

No votes have been submitted yet.

На разработку сайта! Скидки до 20%!