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