gpt4 book ai didi

php - 如果用户位于 50m 半径内,如何比较 db 的值

转载 作者:行者123 更新时间:2023-11-29 12:08:11 24 4
gpt4 key购买 nike

$test_1 = mysql_query("SELECT id,name,l_name,foto_profili FROM users");

while($test = mysql_fetch_array($test_1)){
$testid = $test['id'];

$test_2 = mysql_query("SELECT kordinata_x,kordinata_y FROM lokacioni WHERE id_user=$testid");

while($riinvest = mysql_fetch_array($test_2)){

$qr_x = $riinvest['kordinata_x'];
$qr_y = $riinvest['kordinata_y'];

if($qr_x<=$qr_x+0.001452||$qr_x<=$qr_x-0.001452&&$qr_y<=$qr_y+0.001877||$qr_y<=$qr_y-0.001877){

echo 'othercode goes here';
}
}
}

所以有一个按钮,用户可以将他/她的位置发送到数据库,我正在尝试检查该用户位置是否在半径为 50m 的圆内

我的问题是,当此代码运行时,所有保存了位置的用户都会弹出,并且 50m 半径代码不起作用

最佳答案

你的问题是 if 条件。

简单地说,您可以进行以下比较:

a <= a + x
or
a <= a - x
and
b <= b + y
or
b <= b - y

由于某个值始终小于或等于相同值加上其他(正)值,因此第一个和第三个条件始终为真。您不得将用户坐标与其自身进行比较。

此外,您的条件尝试应用方形区域而不是圆形区域。要计算距离,请将经度和纬度值转换为公制位置。然后应用这个公式:

distance := sqrt((x2-x1)^2 + (y2-y1)^2)

如果结果小于或等于 50,则条件为真。

根据您的代码,它在 PHP 中看起来像这样。我的 PHP 不太好,所以它可能包含语法错误:

$test_1 = mysql_query("SELECT id,name,l_name,foto_profili FROM users");

while($test = mysql_fetch_array($test_1)){
$testid = $test['id'];

$test_2 = mysql_query("SELECT kordinata_x,kordinata_y FROM lokacioni WHERE id_user=$testid");

while($riinvest = mysql_fetch_array($test_2)){

$qr_x = $riinvest['kordinata_x'];
$qr_y = $riinvest['kordinata_y'];

<!-- coordToMeters is a fictional function, you have to implement some function that converts coordinates into meters -->
$qr_x_meters = coordToMeters($qr_x);
$qr_y_meters = coordToMeters($qr_y);

<!-- you'll need to provide the coordinates of the center of the circle the users coordinates are checked to be within -->
$comp_x = ???;
$comp_y = ???;

<!-- again, you have to convert them into meters -->
$comp_x_meters = coordToMeters($comp_x);
$comp_y_meters = coordToMeters($comp_y);

<!-- calculate the distance from the circles center to the users position -->
$distance = sqrt(($comp_x_meters - $qr_x_meters)^2 + ($comp_y_meters - $qr_y_meters)^2);
if($distance <= 50){
<!-- do whatever you want to do for those user within the circle -->
}
}
}

关于php - 如果用户位于 50m 半径内,如何比较 db 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31114064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com