Monthly Archive 2014-09-15

Byphunsanit

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

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

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