You are on page 1of 2

Display Sunrise and Sunset Time Using PHP and MySQL Database

The example demonstrates you on how to calculate the sunrise and sunset value from IP address without the use of weather library. This solution requires a geolocation table, such as the DB11.LITE database which can be downloaded free from lite.ip2location.com. In this tutorial, we are using PHP and MySQL Database. For quick summary, this solution will extract the timezone value from the IP address, the visitor's IP address, and perform the calculation using PHP library and return the sunrise and sunset information. Step 1: Download the DB11.LITE, unzip the file follow the instruction in order to create database table. You may refer to http://lite.ip2location.com/database-ip-country-region-citylatitude-longitude-zipcode-timezone for further information. Step 2: Run the sample code below:
<?php //MySQL configuration $mysql_server = "mysql_server.com"; $mysql_user_name = "User ID"; $mysql_user_pass = "password"; $ip = $_SERVER['REMOTE_ADDR']; $ipno = Dot2LongIP($ip); $link = mysql_connect($mysql_server, $mysql_user_name, $mysql_user_pass) or die("Could not connect to MySQL database"); // Connect to the IP2Location database mysql_select_db("ip2location") or die("Could not select database"); // SQL query string to match the recordset that the IP number fall between the valid range $query = "SELECT time_zone, country_code, latitude, longitude FROM db11lite WHERE $ipno >= ip_from AND $ipno <= ip_to"; // Execute SQL query $result = mysql_query($query) or die("IP2Location Query Failed"); // Retrieve the recordset (only one) $row = mysql_fetch_object($result); //Retrieving data from database $country_code = $row->country_code; $time_zone = $row->time_zone;

Copyright 2001-2014 Hexasoft Development Sdn. Bhd. All rights reserved.

$latitude = $row->latitude; $longitude = $row->longitude; mysql_free_result($result); mysql_close($link); //Setting Sun's zenith value $zenith = 90+50/60; $offset = explode(':', $time_zone);

date_default_timezone_set("UTC"); $date = date_create("UTC"); $sunset = date_sunset(date_timestamp_get($date), SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $offset[0]); $sunrise = date_sunrise(date_timestamp_get($date), SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $offset[0]); //Displaying output echo 'Country Code: ' . $country_code . '<br />'; echo 'Sunset Time: ' . $sunset . '<br />'; echo 'Sunrise Time: ' . $sunrise . '<br />'; echo 'Latitude: ' . $latitude . '<br />'; echo 'Longitude: ' . $longitude . '<br />'; echo $time_zone; // Function to convert IP address (xxx.xxx.xxx.xxx) to IP number (0 to 256^4-1) function Dot2LongIP ($IPaddr) { if ($IPaddr == "") { return 0; } else { $ips = explode(".", $IPaddr); return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256); } } ?>

Copyright 2001-2014 Hexasoft Development Sdn. Bhd. All rights reserved.

You might also like