2014-06-26 48 views
-3

我想这工作了我的旧的数据库结构PHP代码安排记录按距离

$lat = '-27.560263394765027'; 
$long = '153.08231055736542'; 
$query = "SELECT * , ((
    ACOS(SIN(".$lat." * PI() /180) * SIN(lat * PI() /180) + COS(".$lat." * PI() /180) * COS(lat * PI() /180) * COS((
    ".$long." - lon) * PI() /180)) *180/PI()) *60 * 1.1515) AS `distance` FROM `km_stores` HAVING `distance` <=100 ORDER BY distance LIMIT 0 , 10"; 

下述方法,我试图采用同样的原则和最大百公里半径内找到最近的30家店这次我的数据库结构完全不同,我需要运行一组sql查询来获得所需的输出。我的查询是

$select_resname = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-name' LIMIT 0 , 30"); 
$select_resdesc = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-description' LIMIT 0 , 30"); 
$select_reslat = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-latitude' LIMIT 0 , 30"); 
$select_reslong = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-longitude' LIMIT 0 , 30"); 
while(($fetch_resname = mysql_fetch_array($select_resname)) && ($fetch_resdesc = mysql_fetch_array($select_resdesc)) && ($fetch_reslat = mysql_fetch_array($select_reslat)) && ($fetch_reslong = mysql_fetch_array($select_reslong))){ 
    // Print the output 
} 

在这种情况下,我该如何按照GEO位置安排记录?

+0

...什么是您的数据库结构? – deceze

+1

听起来像你想使用['ORDER BY()'](http://www.sql-tutorial.net/SQL-ORDER-BY.asp)和/或['GROUP BY()'](http: //www.sql-tutorial.net/SQL-GROUP-BY.asp) –

+0

@ Fred-ii- GROUP BY?我没有看到。 !?! – Strawberry

回答

1
$select_resname = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-name' LIMIT 0 , 30"); 
$select_resdesc = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-description' LIMIT 0 , 30"); 
$select_reslat = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-latitude' LIMIT 0 , 30"); 
$select_reslong = mysql_query("SELECT * FROM `wp_cf7dbplugin_submits` WHERE `form_name` = 'Add Store' AND `field_name` = 'store-longitude' LIMIT 0 , 30"); 

$resultAreas   = array(); 
while(($fetch_resname = mysql_fetch_array($select_resname)) && ($fetch_resdesc = mysql_fetch_array($select_resdesc)) && ($fetch_reslat = mysql_fetch_array($select_reslat)) && ($fetch_reslong = mysql_fetch_array($select_reslong))){ 
    $areaResult1  = @$fetch_resname["area_field"]; 
    $areaResult2  = @$fetch_resdesc["area_field"]; 
    $areaResult3  = @$fetch_reslat["area_field"]; 
    $areaResult4  = @$fetch_reslong["area_field"]; 

    if($areaResult1!="") 
    { 
     $resultAreas[]= $areaResult1; 
    } 
    if($areaResult2!="") 
    { 
     $resultAreas[]= $areaResult2; 
    } 
    if($areaResult3!="") 
    { 
     $resultAreas[]= $areaResult3; 
    } 
    if($areaResult4!="") 
    { 
     $resultAreas[]= $areaResult4; 
    } 
} 
sort($resultAreas); 
print_r($resultAreas); // prints you the sorted result 
+0

我不认为这会实时工作,因为它按照数字顺序排序,而不是按照距离排序。此外,获得输出就像“阵列”。 +1代码。 – lock