จะทำระบบดึงข้อมูลหลายระดับ จังหวัด อำเภอ ตำบล ของประเทศไทย โดยถ้าเลือกจังหวัดแล้วจะแสดงอำเภอในจังหวัดนั่นๆ ให้เลือก แล้วสามารถเลือกตำบลได้ต่อไป
ข้อมูลตำบลมีให้โหลดโดยค้นหาว่า ฐานข้อมูล ไทยตำบล ผมไม่ทราบว่าใครเป็นคนทำคนแรก แต่ก็ขอขอบคุณที่แบ่งปันครับ ^_^
เวอร์ชั่นล่าสุดน่าจะเป็นของบล๊อก ScriptCase มีการใส่รหัสไปรษณีย์ เพิ่มเข้ามาด้วย
- สร้างตารางข้อมูลก่อน จากไฟล์ที่ดาวน์โหลดมาจากเว็บด้านบน หรือจากที่อื่นครับ
- สร้างไฟล์ thailandJSON.php ดึงข้อมูลตามตัวอย่าง[code language=”php”]
<?php
$dsn = mysqli_connect(‘localhost’,’root’,”,’iso 3166-2′) or die(‘Error ‘ . mysqli_error($link));
mysqli_query($dsn, "SET NAMES ‘utf8’;");switch($_REQUEST[‘subdivisions’])
{
case ‘province’ :
{
$sql = ‘SELECT `PROVINCE_ID` AS value, `PROVINCE_NAME` AS text
FROM `province`
ORDER BY CONVERT(`PROVINCE_NAME` USING TIS620) ASC’;
}break;
case ‘amphur’ :
{
$sql = ‘SELECT `AMPHUR_ID` AS value, `AMPHUR_NAME` AS text
FROM `amphur`
WHERE `PROVINCE_ID` = ‘.$_REQUEST[‘parent_id’].’
ORDER BY CONVERT(`AMPHUR_NAME` USING TIS620) ASC’;
}break;
case ‘district’ :
{
$sql = ‘SELECT `DISTRICT_ID` AS value, `DISTRICT_NAME` AS text
FROM `district`
WHERE `AMPHUR_ID` = ‘.$_REQUEST[‘parent_id’].’
ORDER BY CONVERT(`DISTRICT_NAME` USING TIS620) ASC’;
}break;
}$result = mysqli_query($dsn, $sql);
$datas = array();
while($row = mysqli_fetch_array($result))
{
array_push($datas, [‘value’ => $row[‘value’], ‘text’ => $row[‘text’]]);
}header(‘Content-type: application/json; charset=utf-8’);
echo json_encode($datas);
[/code] - ทดลองเรียกใช้งาน ดู
- ../thailandJSON.php?subdivisions=province
- ../thailandJSON.php?subdivisions=amphur&parent_id=1
- ../thailandJSON.php?subdivisions=district&parent_id=22
อย่าลืมแก้ ข้อมูล การ connect ให้ตรงกับตอนสร้างฐานข้อมูลด้วย
About the author