<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HavlenaBlog &#187; MySQL</title>
	<atom:link href="http://www.havlena.net/blog/en/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.havlena.net/blog</link>
	<description>... o všem a všelijak</description>
	<lastBuildDate>Wed, 26 May 2010 00:18:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GPS distance search via MySQL and PHP</title>
		<link>http://www.havlena.net/blog/en/hledani-vzdalenosti-gps-souradnic-v-mysql-a-php/</link>
		<comments>http://www.havlena.net/blog/en/hledani-vzdalenosti-gps-souradnic-v-mysql-a-php/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 14:01:09 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Tips and tricks]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=860</guid>
		<description><![CDATA[Do you have objects with GPS coordinates stored in your DB (if not, you can get GPS coordinates simply) and do you want to search among them on the basis of mutual distances? Yes? So it&#8217;s you who can appreciate following MySQL procedure.

We can start&#8230;
The sample is going to work with this table:
CREATE &#160;TABLE IF [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-917" title="GPS coordinates - sample on Google Maps" src="http://www.havlena.net/blog/wp-content/2009/11/gps-coordinates.jpg" alt="GPS souřadnice - ukázka na Google Maps" width="199" height="164" />Do you have <strong>objects with GPS coordinates stored in your DB</strong> (if not, <a href="http://www.havlena.net/blog/php-a-google-maps-jak-ziskat-gps-souradnice-pro-adresu/">you can get GPS coordinates simply</a>) and do you want to <strong>search among them on the basis of mutual distances</strong>? Yes? So it&#8217;s you who can appreciate following <strong>MySQL procedure</strong>.</p>
<p><span id="more-860"></span></p>
<h3>We can start&#8230;</h3>
<p>The sample is going to work with this table:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> &nbsp;<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`buildings`</span> <span style="color: #66cc66;">&#40;</span><br />
<span style="color: #ff0000;">`building_id`</span> INT <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_street`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>200<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_street_nr`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>20<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_city`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>200<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_latitude`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>30<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_longitude`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>30<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`building_id`</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span></div></div>
<p>We will create the procedure called <code class="codecolorer text default"><span class="text">gpsdistance</span></code> with two input numbers <code class="codecolorer text default"><span class="text">mybuilding_id</span></code> and <code class="codecolorer text default"><span class="text">mydistance</span></code>.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> PROCEDURE <span style="color: #ff0000;">`gpsdistance`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IN</span> mybuilding_id int<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">IN</span> mydistance int<span style="color: #66cc66;">&#41;</span></div></div>
<p><code class="codecolorer text default"><span class="text">mybuilding_id</span></code> represents ID number of our base building in which surroundings we will search further buildings (which are situated inside the distance handed in the second parameter <code class="codecolorer text default"><span class="text">mydistance</span></code>) (in kilometers!).</p>
<p>Sequentially we will declare these internal variables:</p>
<ul>
<li><code class="codecolorer text default"><span class="text">mylon</span></code> &#8211; longitude of our base building</li>
<li><code class="codecolorer text default"><span class="text">mylat</span></code> &#8211; latitude of our base building</li>
<li><code class="codecolorer text default"><span class="text">lon1</span></code> &#8211; 1. longitude limit</li>
<li><code class="codecolorer text default"><span class="text">lon2</span></code> &#8211; 2. longitude limit</li>
<li><code class="codecolorer text default"><span class="text">lat1</span></code> &#8211; 1. latitude limit</li>
<li><code class="codecolorer text default"><span class="text">lat2</span></code> &#8211; 2. latitude limit</li>
</ul>
<p>Next command loads actual values of our base building into variables <code class="codecolorer text default"><span class="text">mylon</span></code> and <code class="codecolorer text default"><span class="text">mylat</span></code>:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> building_latitude<span style="color: #66cc66;">,</span> building_longitude <span style="color: #993333; font-weight: bold;">INTO</span> mylat<span style="color: #66cc66;">,</span> mylon <span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_id <span style="color: #66cc66;">=</span> mybuilding_id;</div></div>
<p>Follow calculating of limiting coordinates on the basis of <code class="codecolorer text default"><span class="text">mydistance</span></code>. Number 111 represents length of 1° of latitude in kilometres (69 miles). The meaning of formulas you can find in the original document (link below).</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SET</span> lon1 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">-</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lon2 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">+</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat1 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat2 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">+</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;</div></div>
<p>And engine of the whole sample is a select which searches buildings located from the base building up to the value of <code class="codecolorer text default"><span class="text">mydistance</span></code>. In addition this script returns column called <code class="codecolorer text default"><span class="text">distance</span></code> which represent real distance (in kilometres) from the base building. Number 6372.795 is earth radius in kilometres (3956 miles). Again, the meaning of formulas you can find in the original document (link below).</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> buildings<span style="color: #66cc66;">.*,</span> 6372<span style="color: #66cc66;">.</span>795 <span style="color: #66cc66;">*</span> 2 <span style="color: #66cc66;">*</span> ASIN<span style="color: #66cc66;">&#40;</span>SQRT<span style="color: #66cc66;">&#40;</span>POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">-</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">/</span>2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span><br />
COS<span style="color: #66cc66;">&#40;</span>mylat <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> COS<span style="color: #66cc66;">&#40;</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylon <span style="color: #66cc66;">-</span> building_longitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180 <span style="color: #66cc66;">/</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> distance<br />
<span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_latitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span> building_longitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span><br />
building_longitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lon1 <span style="color: #993333; font-weight: bold;">AND</span> lon2 <span style="color: #993333; font-weight: bold;">AND</span> building_latitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lat1 <span style="color: #993333; font-weight: bold;">AND</span> lat2 <span style="color: #993333; font-weight: bold;">HAVING</span> distance <span style="color: #66cc66;">&lt;</span> mydistance <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> distance <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">50</span>;</div></div>
<h3>Complete MySQL procedure</h3>
<p>Command <code class="codecolorer text default"><span class="text">DELIMITER //</span></code> set separator on two slashes. It&#8217;s happening because the default separator is semicolon. Semicolons are emerged inside the procedure and it would cause the fault during procedure creation. That&#8217;s why you should pay attention as long as you create procedure in phpMyAdmin (you will have to set separator different from semicolon &#8211; under the SQL command field).</p>
<pre>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DELIMITER <span style="color: #66cc66;">//</span><br />
<span style="color: #993333; font-weight: bold;">CREATE</span> PROCEDURE <span style="color: #ff0000;">`gpsdistance`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IN</span> mybuilding_id int<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">IN</span> mydistance int<span style="color: #66cc66;">&#41;</span><br />
BEGIN<br />
declare mylon double;<br />
declare mylat double;<br />
declare lon1 float;<br />
declare lon2 float;<br />
declare lat1 float;<br />
declare lat2 float;<br />
<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> building_latitude<span style="color: #66cc66;">,</span> building_longitude <span style="color: #993333; font-weight: bold;">INTO</span> mylat<span style="color: #66cc66;">,</span> mylon <span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_id <span style="color: #66cc66;">=</span> mybuilding_id;<br />
<br />
<span style="color: #993333; font-weight: bold;">SET</span> lon1 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">-</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lon2 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">+</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat1 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat2 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">+</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> buildings<span style="color: #66cc66;">.*,</span> 6372<span style="color: #66cc66;">.</span>795 <span style="color: #66cc66;">*</span> 2 <span style="color: #66cc66;">*</span> ASIN<span style="color: #66cc66;">&#40;</span>SQRT<span style="color: #66cc66;">&#40;</span>POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">-</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">/</span>2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span><br />
COS<span style="color: #66cc66;">&#40;</span>mylat <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> COS<span style="color: #66cc66;">&#40;</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylon <span style="color: #66cc66;">-</span> building_longitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180 <span style="color: #66cc66;">/</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> distance<br />
<span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_latitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span> building_longitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span><br />
building_longitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lon1 <span style="color: #993333; font-weight: bold;">AND</span> lon2 <span style="color: #993333; font-weight: bold;">AND</span> building_latitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lat1 <span style="color: #993333; font-weight: bold;">AND</span> lat2 <span style="color: #993333; font-weight: bold;">HAVING</span> distance <span style="color: #66cc66;">&lt;</span> mydistance <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> distance <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">50</span>;<br />
<br />
END<span style="color: #66cc66;">//</span></div></td></tr></tbody></table></div>
</pre>
<h3>Calling the procedure in PHP</h3>
<p><strong>Very important</strong> is to know that you can call procedures <strong>only through MySQLi layer</strong> (which is object-oriented). The procedure can be call by this SQL command: <code class="codecolorer sql default"><span class="sql">call gpsdistance<span style="color: #66cc66;">&#40;</span>$mybuilding_id<span style="color: #66cc66;">,</span> $mydistance<span style="color: #66cc66;">&#41;</span></span></code>. Here is a short sample:</p>
<pre>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysqli_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'db'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'passwd'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Can't connect to MySQL Server. Errorcode: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mysqli_connect_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">exit</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysqli_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;call gpsdistance(<span style="color: #006699; font-weight: bold;">$mybuilding_id</span>, 5)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysqli_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">...</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">mysqli_free_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">mysqli_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
</pre>
<p>That&#8217;s all. I hope the article is useful for somebody <img src='http://www.havlena.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Used literature</h3>
<ul>
<li>RUBIN, Alexander. Geo/Spatial Search with MySQL. Scribd [online]. 2008 [cit. 2009-11-04]. Accessible from WWW: &lt;<a href="http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL">http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL</a>&gt;.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/hledani-vzdalenosti-gps-souradnic-v-mysql-a-php/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

