PHP - MySQL - jQuery จังหวัด อำเภอ ตำบล


เลือกจังหวัดโชว์อำเภอ เลือกอำเภอโชว์ตำบลง่ายๆ ด้วย PHP และ jQuery

บทความนี้ช่วยให้เราสามารถเขียนโปรแกรมด้วย PHP ในฟอร์มกรอกข้อมูลให้สะดวกรวดเร็วมากยิ่งขึ้นโดย

หลังจากที่เลือกจังหวัดแล้ว จะแสดงรายการของอำเภอที่อยู่ในจังหวัดนั้น และหลังจากที่เลือกอำเภอแล้วก็จะแสดงตำบลในอำเภอนั้นอีกด้วยทำให้สะดวกต่อการกรอกข้อมูล

ความต้องการ

  • jQuery

form.php

<?php
include("conn_db.php");
?>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(function(){
 $("select#province").change(function(){
  var datalist2 = $.ajax({ // รับค่าจาก ajax เก็บไว้ที่ตัวแปร datalist2
     url: "amphur.php", // ไฟล์สำหรับการกำหนดเงื่อนไข
     data:"province_id="+$(this).val(), // ส่งตัวแปร GET ชื่อ province ให้มีค่าเท่ากับ ค่าของ province
     async: false
  }).responseText;  
  $("select#amphur").html(datalist2); // นำค่า datalist2 มาแสดงใน listbox ที่ 2 ที่ชื่อ amphur
  // ชื่อตัวแปร และ element ต่างๆ สามารถเปลี่ยนไปตามการกำหนด
 });
});
$(function(){
 $("select#amphur").change(function(){
  var datalist3 = $.ajax({ // รับค่าจาก ajax เก็บไว้ที่ตัวแปร datalist3
     url: "tambol.php", // ไฟล์สำหรับการกำหนดเงื่อนไข
     data:"amphur_id="+$(this).val(), // ส่งตัวแปร GET ชื่อ amphur ให้มีค่าเท่ากับ ค่าของ amphur
     async: false
  }).responseText;  
  $("select#tambol").html(datalist3); // นำค่า datalist2 มาแสดงใน listbox ที่ 3 ที่ชื่อ tambol
  // ชื่อตัวแปร และ element ต่างๆ สามารถเปลี่ยนไปตามการกำหนด
 });
});
</script>
<h2>แบบฟอร์มสมัครสมาชิก </h2>
<form action="?" method="post" name="signup_form">
<table width="100%">
<?php
   $sql="SELECT * FROM tbl_province ORDER BY province_name ASC";
   $result=mysql_query($sql);
   
   ?>
              <td align="right">จังหวัด</td>
              <td><select name="province" id="province">
               <option value="0">-- เลือกจังหวัด --</option>
              <?php while($rs=mysql_fetch_array($result)){ ?>
                <option value="<?php echo $rs['province_id'];?>"><?php echo $rs['province_name'];?></option>
              <?php } ?>
              </select></td>
            </tr>
            <tr>
              <td align="right">อำเภอ</td>
              <td><select name="amphur" id="amphur">
                <option value="0">-- เลือกอำเภอ --</option>
              </select></td>
            </tr>
            <tr>
              <td align="right">ตำบล</td>
              <td><select name="tambol" id="tambol">
                <option value="0">-- เลือกตำบล --</option>
              </select></td>
            </tr>
</table>
<?php
include("close_db.php");
?>

 

------------------------------------------------------------

amphur.php

<?php
header("Content-type: application/xhtml+xml; charset=utf-8");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

include("conn_db.php");
$province_id = $_GET['province_id'];

$sql= "SELECT * FROM tbl_amphur WHERE province_id = ". $province_id ."  ORDER BY amphur_name ASC";
$result = mysql_query($sql);

if(isset($_GET['province_id']) && $_GET['province_id']!=""){
 ?>
    <option value="">เลือกรายการ</option>
    <?php while($rs=mysql_fetch_array($result)){ ?>
    <option value="<?php echo $rs['amphur_id'];?>"><?php echo $rs['amphur_name'];?></option>
    <?php } ?>
<?php }else{ ?>
    <option value="">เลือกรายการ</option>
<?php } ?>

 

-------------------------------------------------------------------

tambol.php

<?php
header("Content-type: application/xhtml+xml; charset=utf-8");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

include("conn_db.php");
$amphur_id = $_GET['amphur_id'];

$sql= "SELECT * FROM tbl_district WHERE amphur_id = ".$amphur_id."  ORDER BY district_name ASC";
$result = mysql_query($sql);

if(isset($_GET['amphur_id']) && $_GET['amphur_id']!=""){
 ?>
    <option value="">เลือกรายการ</option>
    <?php while($rs=mysql_fetch_array($result)){ ?>
    <option value="<?php echo $rs['district_id'];?>"><?php echo $rs['district_name'];?></option>
    <?php } ?>
<?php }else{ ?>
    <option value="">เลือกรายการ</option>
<?php } ?>

เพียงเท่านี้ก็สามารถเลือก จังหวัด อำเภอ และตำบลได้แล้ว

หมายเลขบันทึก: 301169เขียนเมื่อ 27 กันยายน 2009 07:21 น. ()แก้ไขเมื่อ 21 มิถุนายน 2012 22:06 น. ()สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกันจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (4)

ดีมากเลยครับ

อยากทราบว่าถ้าต้องส่งตัวแปรเพื่อดึงตำบลเป็นสองค่า คือตัวแปรจังหวัด กับอำเภอ จะต้องส่งยังงัยครับ

ส่วน amphur.php เพิ่มข้อมูลจังหวัดใน

 <option value="<?php echo $rs['amphur_id'];?>-<?php echo $rs['province_id'];?>">

จากนั้นส่วน tambol.php

ใช้ substr() เพื่อแยกรหัสอำเภอ กับจังหวัด

แล้วใส่ใน where ของ sql ได้เลยครับ

ในฐานข้อมูลจะเก็บตัวเลข ตำบล อำเภอ จังหวัด เวลาจะดึงมาแสดงเป็นชื่อ ไม่ใช่ตัวเลข จะเขียนโค๊ดอย่างไรครับ. (name_th) น่ะครับ.

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท