Skip to main content

การใช้งาน Select2 With PHP/MySQL สร้างตัวเลือกแบบ DropDown เลือก จังหวัด อำเภอ ตำบล

การใช้งาน Jquery Select2 สร้างตัวเลือกแบบ DropDown เลือก จังหวัด อำเภอ ตำบล โดยดึงข้อมูล มาจากฐานข้อมูล MySQL  ในบทความนี้จะใช้ฐานข้อมูล SQL จาก Thailand Province Database
ซึ่งจะมีการใช้งาน ร่วมกับ  JQuery Select2 เพื่อเพิ่มความสะดวกในการใช้งานมากยิ่งขึ้น

หากใครยังไม่รู้จัก JQuery Select2 ดูตัวอย่างเพิ่มเติมเกี่ยวกับ Select2 ได้ที่ Select2 Examples

select2

จะเห็นว่ามี Select Box ให้เราใช้งานได้หลายรูปแบบ แต่ในตัวอย่างนี้เป็นการใช้งาน Select Box ในรูปแบบ Single Select Boxes ซึ่งมีความพิเศษคือ สามารถค้นหาข้อมูลที่อยู่ใน Select  Box ได้ทันทีโดยที่ไม่ต้องเขียนโปรแกรมเพิ่ม เพียงแค่ นำเข้า Script ของ Select2 และ เรียกใช้งาน class ของ Select2 ก็สามารถใช้งานได้ทันที

ตัวอย่าง ไฟล์ index.php

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Select2</title>

	<!-- นำเข้า Bootstrap CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    
	<!-- นำเข้า Select2 CSS -->
	<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2/css/select2.min.css" rel="stylesheet" />

  </head>
  <body>

	<div class="container">
	
			<div class="col-md-4">

					<div class="form-group">
						<!-- แสดงตัวเลือก จังหวัด -->
						<select class="form-control select2-single" id="province">
							<option id="province_list"> -- Select --</option>

						</select>
					</div>
			
			</div>
			
						
			<div class="col-md-4">

					<div class="form-group">
						<!-- แสดงตัวเลือก อำเภอ -->
						<select class="form-control select2-single" id="amphur">
							<option id="amphur_list"> -- Select --</option>
						</select>
					</div>
			
			</div>
			
			<div class="col-md-4">
			
					<div class="form-group">
						<!-- แสดงตัวเลือก ตำบล -->
						<select class="form-control select2-single" id="district">
							<option> -- Select --</option>
						</select>
					</div>

			</div>

	</div>
	
	
    <!-- นำเข้า Javascript jQuery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
	
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
	
	
	<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2/js/select2.min.js"></script>
	
	<script>
			
			$(function(){
				
				//เรียกใช้งาน Select2
				$(".select2-single").select2();
				
				//ดึงข้อมูล province จากไฟล์ get_data.php
				$.ajax({
					url:"get_data.php",
					dataType: "json", //กำหนดให้มีรูปแบบเป็น Json
					data:{show_province:'show_province'}, //ส่งค่าตัวแปร show_province เพื่อดึงข้อมูล จังหวัด
					success:function(data){
						
						//วนลูปแสดงข้อมูล ที่ได้จาก ตัวแปร data
						$.each(data, function( index, value ) {
							//แทรก Elements ใน id province  ด้วยคำสั่ง append
							  $("#province").append("<option value='"+ value.id +"'> " + value.name + "</option>");
						});
					}
				});
				
				
				//แสดงข้อมูล อำเภอ  โดยใช้คำสั่ง change จะทำงานกรณีมีการเปลี่ยนแปลงที่ #province
				$("#province").change(function(){

					//กำหนดให้ ตัวแปร province มีค่าเท่ากับ ค่าของ #province ที่กำลังถูกเลือกในขณะนั้น
					var province_id = $(this).val();
					
					$.ajax({
						url:"get_data.php",
						dataType: "json",//กำหนดให้มีรูปแบบเป็น Json
						data:{province_id:province_id},//ส่งค่าตัวแปร province_id เพื่อดึงข้อมูล อำเภอ ที่มี province_id เท่ากับค่าที่ส่งไป
						success:function(data){
							
							//กำหนดให้ข้อมูลใน #amphur เป็นค่าว่าง
							$("#amphur").text("");
							
							//วนลูปแสดงข้อมูล ที่ได้จาก ตัวแปร data  
							$.each(data, function( index, value ) {
								
								//แทรก Elements ข้อมูลที่ได้  ใน id amphur  ด้วยคำสั่ง append
								  $("#amphur").append("<option value='"+ value.id +"'> " + value.name + "</option>");
							});
						}
					});

				});
				
				//แสดงข้อมูลตำบล โดยใช้คำสั่ง change จะทำงานกรณีมีการเปลี่ยนแปลงที่  #amphur
				$("#amphur").change(function(){
					
					//กำหนดให้ ตัวแปร amphur_id มีค่าเท่ากับ ค่าของ  #amphur ที่กำลังถูกเลือกในขณะนั้น
					var amphur_id = $(this).val();
					
					$.ajax({
						url:"get_data.php",
						dataType: "json",//กำหนดให้มีรูปแบบเป็น Json
						data:{amphur_id:amphur_id},//ส่งค่าตัวแปร amphur_id เพื่อดึงข้อมูล ตำบล ที่มี amphur_id เท่ากับค่าที่ส่งไป
						success:function(data){
							
							  //กำหนดให้ข้อมูลใน #district เป็นค่าว่าง
							  $("#district").text("");
							  
							//วนลูปแสดงข้อมูล ที่ได้จาก ตัวแปร data  
							$.each(data, function( index, value ) {
								
							  //แทรก Elements ข้อมูลที่ได้  ใน id district  ด้วยคำสั่ง append
							  $("#district").append("<option value='" + value.id + "'> " + value.name + "</option>");
							  
							});
						}
					});
					
				});
				
				//คำสั่ง change จะทำงานกรณีมีการเปลี่ยนแปลงที่  #district 
				$("#district").change(function(){
					
					//นำข้อมูลรายการ จังหวัด ที่เลือก มาใส่ไว้ในตัวแปร province
					var province = $("#province option:selected").text();
					
					//นำข้อมูลรายการ อำเภอ ที่เลือก มาใส่ไว้ในตัวแปร amphur
					var amphur = $("#amphur option:selected").text();
					
					//นำข้อมูลรายการ ตำบล ที่เลือก มาใส่ไว้ในตัวแปร district
					var district = $("#district option:selected").text();
					
					//ใช้คำสั่ง alert แสดงข้อมูลที่ได้
					alert("คุณได้เลือก :  จังหวัด : " + province + " อำเภอ : "+ amphur + "  ตำบล : " + district );
					
				});
				
				
			});
			
	</script>
	
	
  </body>
</html>

ตัวอย่างไฟล์ get_data.php

<?php
	//connect Database
	$servername = "localhost";
	$username = "root";
	$password = "";
	$db = "person";

	// Create connection
	$conn = new mysqli($servername, $username, $password,$db);
	
	// Change character set to utf8
	mysqli_set_charset($conn,"utf8");

	// Check connection
	if ($conn->connect_error) {
		die("Connection failed: " . $conn->connect_error);
	} 


	//ตรวจสอบว่า มีค่า ตัวแปร $_GET['show_province'] เข้ามาหรือไม่  	//แสดงรายชื่อจังหวัด
	if(isset($_GET['show_province'])){
		
		//คำสั่ง SQL เลือก id และ  ชื่อจังหวัด
		$sql = "SELECT PROVINCE_ID,PROVINCE_NAME FROM province";
		
		//ประมวณผลคำสั่ง SQL
		$result = $conn->query($sql);

		//ตรวจสอบ จำนวนข้อมูลที่ได้ มีค่ามากกว่า  0 หรือไม่
		if ($result->num_rows > 0) {
			
			//วนลูปแสดงข้อมูลที่ได้ เก็บไว้ในตัวแปร $row
			while($row = $result->fetch_assoc()) {
				
				//เก็บข้อมูลที่ได้ไว้ในตัวแปร Array 
				$json_result[] = [
					'id'=>$row['PROVINCE_ID'],
					'name'=>$row['PROVINCE_NAME'],
				];
			}
			
			//ใช้ Function json_encode แปลงข้อมูลในตัวแปร $json_result ให้เป็นรูปแบบ Json
			echo json_encode($json_result);
			
		} 
	}

	
	//ตรวจสอบว่า มีค่า ตัวแปร $_GET['province_id'] เข้ามาหรือไม่  //แสดงรายชืออำเภอ
	if(isset($_GET['province_id'])){

		//กำหนดให้ตัวแปร $province_id มีค่าเท่ากับ $_GET['province_id]
		$province_id = $_GET['province_id'];
		
		//คำสั่ง SQL เลือก AMPHUR_ID และ  AMPHUR_NAME ที่มี PROVINCE_ID เท่ากับ $province_id
		$sql = "SELECT AMPHUR_ID,AMPHUR_NAME FROM amphur WHERE PROVINCE_ID = ".$province_id." ";
		
		//ประมวณผลคำสั่ง SQL
		$result = $conn->query($sql);

		//ตรวจสอบ จำนวนข้อมูลที่ได้ มีค่ามากกว่า  0 หรือไม่
		if ($result->num_rows > 0) {
			
			//วนลูปนำข้อมูลที่ได้ เก็บไว้ในตัวแปร $row
			while($row = $result->fetch_assoc()) {
				
				//เก็บข้อมูลที่ได้ไว้ในตัวแปร Array 
				$json_result[] = [
					'id'=>$row['AMPHUR_ID'],
					'name'=>$row['AMPHUR_NAME'],
				];
			}
			
			//ใช้ Function json_encode แปลงข้อมูลในตัวแปร $json_result ให้เป็นรูปแบบ Json
			echo json_encode($json_result);
			
		} 
	}
	
	
	//ตรวจสอบว่า มีค่า ตัวแปร $_GET['province_id'] เข้ามาหรือไม่  //แสดงรายชืออำเภอ
	if(isset($_GET['amphur_id'])){
		
		//กำหนดให้ตัวแปร $amphur_id มีค่าเท่ากับ $_GET['amphur_id]
		$amphur_id = $_GET['amphur_id'];

		//คำสั่ง SQL เลือก DISTRICT_CODE และ  DISTRICT_NAME ที่มี AMPHUR_ID เท่ากับ $amphur_id
		$sql = "SELECT DISTRICT_CODE,DISTRICT_NAME FROM district WHERE AMPHUR_ID = '".$amphur_id."' ";
		
		//ประมวณผลคำสั่ง SQL
		$result = $conn->query($sql);
		
		//ตรวจสอบ จำนวนข้อมูลที่ได้ มีค่ามากกว่า  0 หรือไม่
		if ($result->num_rows > 0) {
			
			//วนลูปนำข้อมูลที่ได้ เก็บไว้ในตัวแปร $row
			while($row = $result->fetch_assoc()) {
				
				//เก็บข้อมูลที่ได้ไว้ในตัวแปร Array 
				$json_result[] = [
					'id' => $row['DISTRICT_CODE'],
					'name'=>$row['DISTRICT_NAME'],

				];
			}
			
			//ใช้ Function json_encode แปลงข้อมูลในตัวแปร $json_result ให้เป็นรูปแบบ Json
			echo json_encode($json_result);
		} 
		
	}
	
?>

Source Code Demo

 

 

 

 

One thought to “การใช้งาน Select2 With PHP/MySQL สร้างตัวเลือกแบบ DropDown เลือก จังหวัด อำเภอ ตำบล”

  1. ดีมากเลย code ก็อ่านง่าย ทำต่อไปนะครับ

    นายเป็นคนดีมากๆ

Comments are closed.