Hướng dẫn query từ SQL ra file XML hoặc JSON
Hôm nay mình sẽ hướng dẫn các bạn làm các truy vấn SQL bằng PHP và trả về file JSON hoặc file XML
Trước tiên mình phải làm 1 cái SQL
các bạn có thể tham khảo link sau để làm ra được cái database
https://developers.google.com/maps/articles/phpsqlsearch_v3
Thử truy vấn trong SQL
SELECT name,address,lat,lng, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) ASdistance FROM markers HAVING distance < 25 ORDER BY distance
Như vậy mục tiêu của mình là xuất ra được 2 định dạng XML và JSON của cái bảng phía trên
Trước hết mình sẽ xuất ra định dạng XML trước sử dụng DOM
<?php
// Khai báo :
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
// Tìm 20 điểm gần nhất tọa độ 37,-122
$sql="SELECT name,address,lat,lng, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance";
$query=mysql_query($sql);
// Hiển thị ra XML
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
// Hiểm thị ra JSON
$json = array() ;
Trước tiên mình phải làm 1 cái SQL
các bạn có thể tham khảo link sau để làm ra được cái database
https://developers.google.com/maps/articles/phpsqlsearch_v3
Thử truy vấn trong SQL
SELECT name,address,lat,lng, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) ASdistance FROM markers HAVING distance < 25 ORDER BY distance
KẾT QUẢ TRẢ VỀ |
Trước hết mình sẽ xuất ra định dạng XML trước sử dụng DOM
<?php
// Khai báo :
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
// Tìm 20 điểm gần nhất tọa độ 37,-122
$sql="SELECT name,address,lat,lng, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance";
$query=mysql_query($sql);
// Hiển thị ra XML
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while ($row = mysql_fetch_array($query)) {
$node = $dom->createElement("marker"); $newnode = $parnode->appendChild($node); $newnode->setAttribute("name", $row['name']); $newnode->setAttribute("address", $row['address']); $newnode->setAttribute("lat", $row['lat']); $newnode->setAttribute("lng", $row['lng']); $newnode->setAttribute("distance", $row['distance']); }
}
echo $dom->saveXML();
KẾT QUẢ XUẤT RA FILE XML |
if(mysql_num_rows($query) == 0) { echo "Chua co du lieu"; } else { while($row=mysql_fetch_array($query)){ $marker=array(); $marker["name"]= $row['name']; $marker["address"]= $row['address']; $marker["lat"]= $row['lat']; $marker["lng"]= $row['lng']; $marker["distance"] = $row['distance'] ; $json['markers'][]=$marker; } } echo json_encode($json);
KẾT QUẢ JSON |
No comments: