Sometimes you need your mysql radius-search backend fast! This is how I do it on the fly. For more infos regarding radius search check this link.
<?php $conn = mysql_connect("SERVER_IP:HOST", "YOUR_USERNAME", "PWD_") or die(mysql_error()); mysql_select_db("YOUR_DB_NAME") or die(mysql_error()); $latitude = $_GET['lat']; $longitude = $_GET['lng']; $radius = $_GET['r']; // rating minimum $rmin = $_GET['minr']; // rating maximum $rmax = $_GET['maxr']; $query = sprintf("SELECT street, tvg_name_hash, tvg_rating,b_stars,long_name, lat, lng, ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM hotel WHERE hotel.b_stars<=3 AND hotel.tvg_rating>='%s' AND hotel.tvg_rating<='%s' HAVING distance < '%s' ORDER BY distance LIMIT 0 , 50", mysql_real_escape_string($latitude), mysql_real_escape_string($longitude), mysql_real_escape_string($latitude), mysql_real_escape_string($rmin), mysql_real_escape_string($rmax), mysql_real_escape_string($radius)); $result = mysql_query($query); if (!$result) { die("Invalid query: " . mysql_error()); } // Iterate through the rows, adding XML nodes for each $output=array(); while ($row = mysql_fetch_assoc($result)){ $output[$row['tvg_name_hash']][] = array( 'name' => utf8_encode($row['long_name']), 'trating' => $row['tvg_rating'], 'bstars' => $row['b_stars'], 'lat' => $row['lat'], 'lng' => $row['lng'] ); } // JSON output echo json_encode($output); // close connection mysql_close($conn); ?>;
Enjoy the source and have fun…