2016-08-03 35 views
0

我試圖根據當前的地理位置查詢我的數據庫。 我試圖找到例子,因爲這對我來說都是新的。 當我使用硬編碼值(45.344779和-73.740337)執行此代碼時,它給了我期望的結果。我想通過這個人的當前地理位置的經度和緯度爲字符串做查詢,但它不工作:PHP獲取當前緯度經度並以字符串形式傳遞以查詢phpmyadmin數據庫

<!DOCTYPE html> 
<head> 
<title>Current Latitude & Longitude</title> 
<script> 
if(!navigator.geolocation){ 
    alert('Your Browser does not support HTML5 Geo Location. Please Use  Newer Version Browsers'); 
} 
navigator.geolocation.getCurrentPosition(success, error); 
function success(position){ 
var latitude = position.coords.latitude; 
var longitude = position.coords.longitude; 
} 
function error(err){ 
alert('ERROR(' + err.code + '): ' + err.message); 
} 
</script> 
<body> 

<?php 
$hostdb = 'localhost'; 
$namedb = 'xxxxxx'; 
$userdb = 'xxxxxx'; 
$passdb = 'xxxxxx'; 

try { 
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); 
$conn->exec("SET CHARACTER SET utf8");  // Sets encoding UTF-8 

$sql="SELECT *, 
SQRT(POW((69.1 * (MyTable.Latitude - :Latitude)) , 2) + 
POW((53 * (MyTable.Longitude - :Longitude)), 2)) AS distance 
FROM MyTable 
ORDER BY distance ASC 
LIMIT 3"; 

$sqlprep = $conn->prepare($sql);  

$ar_val = array('Latitude'=> 45.344779, 'Longitude'=> -73.740337); 

if($sqlprep->execute($ar_val)) { 
// gets and displays the data returned by MySQL 
while($row = $sqlprep->fetch()) echo $row['Direction'].' - '.$row['Km'].' : '.$row['Latitude'].' & '.$row['Longitude'].'<br />'; 
} 
    $conn = null;   
    } 
    catch(PDOException $e) { 
    echo $e->getMessage(); 
    } 
    ?> 

任何幫助或提示將不勝感激。謝謝!

回答

0

如果我理解正確,你想要做的是獲取客戶端的當前位置,並顯示按距離排序的表格內容...... 要做到這一點,需要將javascript變量傳遞給php。你不能在同一頁面上做到這一點,你需要刷新當前頁面並通過get或post傳遞座標,或者通過ajax調用單獨的php部分頁面。 你也可以完全在php端完成,通過從客戶端的ip收集座標並使用像http://ipinfo.io/這樣的服務,但是這有一些限制。

+0

感謝Franz的信息和您的時間。我會嘗試按照建議使用Javascript來改變查詢,例如:$ ar_val = array('Latitude'=> UserLat,'Longitude'=> UserLon); – Cbeaulie