
ได้มีโอกาสทำ project ที่ต้องใช้ข้อมูลรหัสองค์กรปกครองส่วนท้องถิ่น (รหัส อปท.) อย่างแรกเลยที่มองหาคือ มีคนทำ sql ไว้ให้ใช้หรือยัง ?
(ที่จริงหน่วยงานเจ้าของข้อมูลน่าจะทำ sql ไว้ให้ใช้ด้วย 55+)
แต่ไม่เป็นไรครับ อย่างน้อยก็ยังมีการแจก Excel ไฟล์จากเว็บกรมส่งเสริมการปกครองท้องถิ่นและองค์กรปกครองส่วนท้องถิ่น
สามารถโหลดได้ที่ www.dla.go.th/work/IDlocal.xls
ที่จริงนำเข้าเลยก็ได้ครับ แต่ของผมติดปัญหาตัวอักษรภาษาไทย นำเข้าแล้วเป็น ?????? ผมใช้ utf8_general_ci db เดิม
ไม่อยากไปยุ่งอะไรกับมัน เลย ใช้วิธีอ่านข้อมูลจากไฟล์ Excel ( ใช้ PHPExcel ) แล้ว gen เป็น sql แล้วค่อยเอาไปใช้งาน (สบายใจกว่า 55+)
ไหนๆ ก็ทำแล้วก็เลยเอามาแชร์ไว้บน github เผื่อมีคนอยากได้ sql ไปใช้จะได้ไม่ต้องเสียเวลาทำเองครับ
=>>> https://github.com/bchaichon/dladata
ส่วนใครอยากได้ code ที่ใช้แปลงก็ตามนี้เลยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
<meta charset="utf-8"> <?php /** PHPExcel */ require_once 'Classes/PHPExcel.php'; /** PHPExcel_IOFactory - Reader */ include 'Classes/PHPExcel/IOFactory.php'; $inputFileName = "idlocal.xls"; $inputFileType = PHPExcel_IOFactory::identify($inputFileName); $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($inputFileName); $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); $highestRow = $objWorksheet->getHighestRow(); $highestColumn = $objWorksheet->getHighestColumn(); $headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true); $headingsArray = $headingsArray[1]; $r = -1; $namedDataArray = array(); for ($row = 2; $row <= $highestRow; ++$row) { $dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true); if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) { ++$r; foreach($headingsArray as $columnKey => $columnHeading) { $data=$dataRow[$row][$columnKey]; //echo $columnKey ; echo ":"; if($columnKey=="D" || $columnKey=="E" || $columnKey=="J"){ $data = PHPExcel_Style_NumberFormat::toFormattedString($data, "YYYY-M-D"); //2016-01-29 } // $namedDataArray[$r][$columnHeading] = $data; } //echo "<br>"; } } $count=0; foreach ($namedDataArray as $result) { $count++; $tmp = explode("ตำบล", $result["dla_name"]) ; if(sizeof($tmp)==2){ $tambon = $tmp[1]; $typename= $tmp[0]."ตำบล"; }else{ $tmp2 = explode("เมือง", $result["dla_name"]) ; if(sizeof($tmp2)==2){ $tambon = $tmp2[1]; $typename= $tmp2[0]."เมือง"; }else{ $tmp3 = explode("จังหวัด", $result["dla_name"]) ; if(sizeof($tmp3)==2){ $tambon = "ในเมือง"; $typename= $tmp3[0]."จังหวัด"; } } } $strSQL = ""; $strSQL .= "INSERT INTO dladata "; $strSQL .= "(dla_id,dla_name,dla_province,dla_amphur,dla_tambon , dla_typename ) "; $strSQL .= "VALUES "; $strSQL .= "('".$result["dla_id"]."','".$result["dla_name"]."' "; $strSQL .= ",'".$result["dla_province"]."','".$result["dla_amphur"]."' , '".$tambon."' , '".$typename."' "; $strSQL .= " ) ; "; echo $strSQL ; echo "<br>"; $query = mysql_query($strSQL); $in=""; if($query){ $in="insert : $count"; } } ?> |
ก็หวังว่าจะมีประโยชน์นะครับ
จบ..แล้วครับ