2014-06-26 105 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