php中查询,在PHP中比较一个查询与多个结果

我有两个文本输入。喜欢这个:

所以我有一些动态的ajax搜索。我传递输入数据并做出两个不同的mysql选择。这样的事情

Table finalmap – SELECT 1

id -------- latitud-----longitud---

1 | 6.2523915 | -75.5737028 |

2 | 6.2640349 | -75.5990783 |

3 | 6.2642411 | -75.5999791 |

4 | 6.2638461 | -75.5982590 |

-------------------------------------

Table finalmap – SELECT 2

id -------- latitud-----longitud---

6 | 6.262669 | -75.596799 |

7 | 6.258019 | -75.598001 |

8 | 6.253668 | -75.599374 |

9 | 6.250724 | -75.602335 |

-------------------------------------

所以,我想把每一个“纬度和纵向”与SELECT2的所有“纬度”和“纵向”字段进行比较:

我有这个Php,我必须做一些改进,但可以说,它的工作:

$buscar = $_POST['b'];

$buscarcarrera = $_POST['c'];

$whatIWant = substr($buscar, strpos($buscar, "Calle") + 5);

$whatIWant2 = substr($buscarcarrera, strpos($buscarcarrera, "Carrera") + 5);

$vacio = "Calle50A";

$vacioc = "Carrera50A";

if (preg_match('/[A-Za-z]/', $whatIWant))

{

buscar($buscar, "", $buscarcarrera, "");

}

else

{

buscar($buscar, $vacio, $buscarcarrera, $vacioc);

}

function buscar($b, $exclusion, $buscarcarrera, $exclusion2)

{

$con = mysql_connect('localhost', 'root', '');

mysql_select_db('map', $con);

$sql = mysql_query("SELECT * FROM finalmap WHERE calle LIKE '%" . $b . "%' AND calle not in ('$exclusion')", $con);

$contar = mysql_num_rows($sql);

if ($contar == 0)

{

echo "No se han encontrado resultados para '" . $b . "'.";

}

else

{

while ($row = mysql_fetch_array($sql))

{

$nombre = $row['calle'];

$id = $row['id'];

$lat = $row['latitud'];

$lon = $row['longitud'];

}

}

$sql2 = mysql_query("SELECT * FROM finalmap WHERE calle LIKE '%" . $buscarcarrera . "%' AND calle not in ('$exclusion2')", $con);

$contar2 = mysql_num_rows($sql2);

if ($contar2 == 0)

{

echo "No se han encontrado resultados para '" . $b . "'.";

}

else

{

while ($row2 = mysql_fetch_array($sql2))

{

$nombre2 = $row2['calle'];

$id2 = $row2['id'];

$lat2 = $row2['latitud'];

$lon2 = $row2['longitud'];

}

}

}

function distance($lat1, $lon1, $lat2, $lon2, $unit)

{

$theta = $lon1 - $lon2;

$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));

$dist = acos($dist);

$dist = rad2deg($dist);

$miles = $dist * 60 * 1.1515;

$unit = strtoupper($unit);

if ($unit == "K")

{

return ($miles * 1.609344);

}

else

if ($unit == "N")

{

return ($miles * 0.8684);

}

else

{

return $miles;

}

}

echo distance(32.9697, -96.80322, 29.46786, -98.53506, "M") . " Miles
";

echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers
";

echo distance(32.9697, -96.80322, 29.46786, -98.53506, "N") . " Nautical Miles
";

?>

然后:如何使用该函数比较每个值以确定坐标之间的接近度(使用我的distance()函数)?我的问题是我不知道如何比较第一个查询的每个点与第二个查询的每个点之间的距离,以及每个可能的组合。

我想要这样的功能比较(lat1,lon1,lat2,lon2);

(lat1,lon1,lat3,lon3),(lat1,lon1,lat4,lon4),(lat1,lon1,lat5,lon5),(lat1,lon1,lat6,lon6)等。

非常感谢您提供任何帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值