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

Опубликовано admin - пт, 07/10/2009 - 09:13

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

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

 

База 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 г.).

Взаимосвязанные материалы

# 1. О сайте (суббота, июля 6, 2019 - 21:51 ),

Сайт slyweb.ru содержит многочисленную информацию о разработке сайтов и их поддержки в рабочем состоянии.

На сегодняшний день slyweb.ru представляет следующие услуги:

читать...
# 2. Как написать первый плагин на jQuery, с использованием ajax? (воскресенье, июня 3, 2018 - 10:52 ),

Возможно рано или поздно Вам придётся писать серьёзные скрипты на jQuery, поскольку jQuery наиболее популярен в последнее время. читать...

# 3. jQuery для начинающих! (пятница, июня 1, 2018 - 21:28 ),

Возможно Вам интересно спросить: "Почему у меня возникла мысль написать подробное мини-руководство об ajax на jQuery?". читать...

# 4. jQuery - самое нужное! Карусель! (воскресенье, мая 20, 2018 - 19:22 ),

Здравствуйте уважаемые читатели, продолжаем цикл статей о самом нужном в jQuery. Сегодня я научу Вас делать jQuery карусель. читать...

# 5. Аудио плеер на основе HTML5 и jQuery (вторник, апреля 17, 2018 - 19:23 ),

Сегодня я расскажу как сделать интересный вариант плеера на основе html 5 и jQuery.

Плеер будет поддерживать следующие функции:

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