2016-03-31 28 views
0

这是我在型号查询距离计算为酒店storelocator不工作

$array = array('dealercity' => $citycheck, 'lat' => $lat, 'lng' => $lng, 'sometype' => $sometypeid, 'type' => $typeid); 
    $this->db->select("*, (
    3959 * acos (
    cos (radians($lat)) 
    * cos(radians(lat)) 
    * cos(radians(lng) - radians($lng)) 
    + sin (radians($lat)) 
    * sin(radians(lat)) 
)) AS distance"); 

    $this->db->from('tbl_dealer_list'); 
    $this->db->where($array); 
    $this->db->having('distance < 25');      
    $this->db->order_by('distance'); 
    $this->db->limit(25, 0); 
    $query = $this->db->get(); 

查询的问题是查询没有显示任何错误。当我搜索特定位置时,显示的是同一个确切位置。在20英里附近的位置不工作。我使用Codeigniter和Mysql。 任何一个知道答案请指出错误。

当我运行查询的距离计算是显示是一些值,如0.00005899369716644287。并且我检查的距离超过此值,但仍未显示附近的位置,并显示数据库中存在一个以上位置的位置。

+0

你可以从你的数据和$ lng和$ lat的确切值给出一些lat和lng的样本吗? – ptrk

+0

如果没有CI活动记录,只需发布​​SQL,只有 –

+0

太棒了!@Abdulla谢谢 – Pointer

回答

0
$return =array(); 

     $query= $this->db->query("select *, (3959 * acos(cos(radians($lat)) * cos(radians(lat)) * cos(radians(lng) - radians($lng)) + sin(radians($lat)) * sin(radians(lat)))) AS distance FROM tbl_dealer_list WHERE dealertype = '".$dealerid."'AND vehicletype = '".$vehicleid."' HAVING distance < 20 ORDER BY distance"); 

     if ($query->num_rows() > 0) 
     { 
     return $query->result();//$query->result_array() 

     }