Я делаю сайт, на котором я должен показать все магазины в списке, отсортированном таким образом, чтобы ближайшие магазины, к текущему местоположению пользователей, приходили первыми, а дальние — позже.
Мне нужен запрос MySQL, который выбирает все магазины из базы данных ORDER BY пользователей текущей позиции.
Я много искал в Google, но не смог найти ни одного запроса, соответствующего моему случаю.
Вы можете попробовать это:
SELECT temp1.* FROM (SELECT s.shop_id, s.shop_name, s.address, 3959 * ACOS( COS( RADIANS( 40.7127 ) ) * COS( RADIANS( s.latitude ) ) * COS( RADIANS( s.longitude ) - RADIANS( 74.0059 ) ) + SIN( RADIANS( 40.7127 ) ) * SIN( RADIANS( s.latitude ) ) ) AS distance FROM shop s) as temp1 WHERE temp1.distance <= 20 ORDER BY temp1.distance
это даст список магазинов в пределах 20 миль.
40,7127 — широта, а 74,0059 — долгота
Я думаю, что вы обнаружите, что вам просто нужно получить все хранилища из вашей базы данных (или, возможно, отфильтровать их по чему-то вроде состояния, чтобы создать меньший набор данных), а затем позволить вашему приложению обрабатывать их по расстоянию.
Вы должны пойти с IP-адресом магазинов с помощью помощника ip, чтобы найти (хост, страна, город, регион) магазина и отобразить их так, чтобы любой мог найти близлежащие магазины. вы можете найти их из ip
<?php
require_once("userip/ip.codehelper.io.php");
require_once("userip/php_fast_cache.php");
$_ip = new ip_codehelper();
$real_client_ip_address = $_ip->getRealIP();
$visitor_location = $_ip->getLocation($real_client_ip_address);
$guest_ip = $visitor_location['IP'];
$guest_country = $visitor_location['CountryName'];
$guest_city = $visitor_location['CityName'];
$guest_state = $visitor_location['RegionName'];
echo "IP Address: ". $guest_ip. "<br/>";
echo "Country: ". $guest_country. "<br/>";
echo "State: ". $guest_state. "<br/>";
echo "City: ". $guest_city. "<br/>";
?>
Вы также можете найти
$ip = $visitor_location['IP'];
$Continent_Code = $$$visitor_location['ContinentCode'];
$Continent_Name = $visitor_location['ContinentName'];
$Country_Code2 = $visitor_location['CountryCode2'];
$Country_Code3 = $visitor_location['CountryCode3'];
$Country = $visitor_location['Country'];
$Country_Name = $visitor_location['CountryName'];
$State_Name = $visitor_location['RegionName'];
$City_Name = $visitor_location['CityName'];
$City_Latitude = $visitor_location['CityLatitude'];
$City_Longitude = $visitor_location['CityLongitude'];
$Country_Latitude = $visitor_location['CountryLatitude'];
$Country_Longitude = $visitor_location['CountryLongitude'];
$Country_Longitude = $visitor_location['CountryLongitude'];
$LocalTimeZone = $visitor_location['LocalTimeZone'];
$Calling_Code = $visitor_location['CallingCode'];
$Population = $visitor_location['Population'];
$Area_SqKm = $visitor_location['AreaSqKm'];
$Capital = $visitor_location['Capital'];
$Electrical = $visitor_location['Electrical'];
$Languages = $visitor_location['Languages'];
$Currency = $visitor_location['Currency'];
$Flag = $visitor_location['Currency'];