จะทำระบบดึงข้อมูลหลายระดับ จังหวัด อำเภอ ตำบล ของประเทศไทย โดยถ้าเลือกจังหวัดแล้วจะแสดงอำเภอในจังหวัดนั่น ๆ ให้เลือก แล้วสามารถเลือกตำบลได้ต่อไป
ข้อมูลตำบลมีให้โหลดโดยค้นหาว่า ฐานข้อมูล ไทยตำบล ผมไม่ทราบว่าใครเป็นคนทำคนแรก แต่ก็ขอขอบคุณที่แบ่งปันครับ ^_^
เวอร์ชั่นล่าสุดน่าจะเป็นของบล๊อก 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 ให้ตรงกับตอนสร้างฐานข้อมูลด้วย
