Site icon PlusMagi's Blog By Pitt Phunsanit

ฐานข้อมูลระดับจังหวัด อำเภอ ตำบล

จะทำระบบดึงข้อมูลหลายระดับ จังหวัด อำเภอ ตำบล ของประเทศไทย โดยถ้าเลือกจังหวัดแล้วจะแสดงอำเภอในจังหวัดนั่น ๆ ให้เลือก แล้วสามารถเลือกตำบลได้ต่อไป

ข้อมูลตำบลมีให้โหลดโดยค้นหาว่า ฐานข้อมูล ไทยตำบล ผมไม่ทราบว่าใครเป็นคนทำคนแรก แต่ก็ขอขอบคุณที่แบ่งปันครับ ^_^
เวอร์ชั่นล่าสุดน่าจะเป็นของบล๊อก ScriptCase มีการใส่รหัสไปรษณีย์ เพิ่มเข้ามาด้วย

  1. สร้างตารางข้อมูลก่อน จากไฟล์ที่ดาวน์โหลดมาจากเว็บด้านบน หรือจากที่อื่นครับ
  2. สร้างไฟล์ 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) ;
    
  3. ทดลองเรียกใช้งาน ดู
    • ../thailandJSON.php?subdivisions=province
    • ../thailandJSON.php?subdivisions=amphur&parent_id=1
    • ../thailandJSON.php?subdivisions=district&parent_id=22

อย่าลืมแก้ ข้อมูล การ connect ให้ตรงกับตอนสร้างฐานข้อมูลด้วย

Exit mobile version