Мне удалось создать функцию php для определения списка почтовых индексов в определенном диапазоне данного почтового индекса.Однако моя следующая задача немного сложнее.
Допустим, в таблице есть следующие столбцы:
id,
username
info
latitude
longitude
range
Каждая запись имеет уникальный идентификатор строки, некоторую информацию, широту,долгота и максимальный диапазон от тех координат, для которых человек хочет найти эту запись.Итак, если я создаю запись с координатами -20, 50 с диапазоном 15, это означает, что я хочу, чтобы люди, находящиеся в пределах 15 миль от координат -20, 50, могли видеть мою запись.Определение широты и долготы пользователя, выполняющего поиск, является тривиальным вопросом.
Когда пользователь выполняет поиск в базе данных, все записи должны быть извлечены для координат широты и долготы в пределах значения диапазона от пользователей.lat / long.
Итак, нефункциональный пример кода, использующего формулу расстояния для иллюстрации этого, будет
$userLat
= широта пользователя, выполняющего поиск
$userLong
= Долгота пользователя, выполняющего поиск
SELECT info FROM table
WHERE sqrt(($userLat - lat)^2 - ($userLong - long)^2) <= range
ORDER BY username ASC
Это было бы идеально, но это недопустимо с точки зрения кодирования.Есть ли способ запустить приведенные выше сравнения с использованием PHP и MySQL в одном запросе?Это может включать возможность запуска операций с использованием нескольких значений столбца из данной строки.
ОБНОВЛЕНИЕ + РЕШЕНИЕ
Я создал еще одну запись вопроса, котораярешает эту проблему и имеет очень компактную функцию, чтобы сделать то, что хотел этот вопрос.Вдохновением для этого послужила функция, заданная coderpros (его функция намного лучше справляется с определенными ситуациями).Однако, поскольку я использую свою функцию с большим уровнем контроля над вводом, я создал отдельную функцию.Его можно найти по ссылке ниже:
Пользовательская функция MySQL для синтаксиса широты и долготы