จะทำระบบดึงข้อมูลหลายระดับ จังหวัด อำเภอ ตำบล ของประเทศไทย โดยถ้าเลือกจังหวัดแล้วจะแสดงอำเภอในจังหวัดนั่นๆ ให้เลือก แล้วสามารถเลือกตำบลได้ต่อไป
ข้อมูลตำบลมีให้โหลดโดยค้นหาว่า ฐานข้อมูล ไทยตำบล ผมไม่ทราบว่าใครเป็นคนทำคนแรก แต่ก็ขอขอบคุณที่แบ่งปันครับ ^_^
เวอร์ชั่นล่าสุดน่าจะเป็นของบล๊อก ScriptCase มีการใส่รหัสไปรษณีย์ เพิ่มเข้ามาด้วย
- สร้างตารางข้อมูลก่อน จากไฟล์ที่ดาวน์โหลดมาจากเว็บด้านบน หรือจากที่อื่นครับ
- สร้างไฟล์ thailandJSON.php ดึงข้อมูลตามตัวอย่าง
12345678910111213141516171819202122232425262728293031323334353637
<?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
);
- ทดลองเรียกใช้งาน ดู
- ../thailandJSON.php?subdivisions=province
- ../thailandJSON.php?subdivisions=amphur&parent_id=1
- ../thailandJSON.php?subdivisions=district&parent_id=22
อย่าลืมแก้ ข้อมูล การ connect ให้ตรงกับตอนสร้างฐานข้อมูลด้วย