A-AA+then

แก้ จังหวัด อำเภอ และตำบล โดยใช้ jquery ให้สามารถใช้ ADODB ได้ ใ

3,154

ตั้งการแก้ให้สามารถใช้ ADODB ได้ ใครทำได้ ใส่บล๊อกเลย

combobox เลือก จังหวัด อำเภอ และตำบล โดยใช้ jquery
http://cakephp.jitwitya.com/post/jquery-multilevel-combobox
ฐานข้อมูล
http://www.thaicreate.com/free-web-script/thailand-province-database.html

พอดีจะเอาไปใช้กับ oracle10g ส่งงาน  แล้วเอากลับมาใช้จริงกับ mysql ทีหลัง

อันที่แก้อยู่

 


includes/connect_adodb.inc.php

<?
$dbhost = "localhost";
$dbuser = "hdddddddddddddddddddddddddd";
$dbpassword = "oddddddddddddddddddddd";
$dbname = "test";
//mysql_connect($host,$user,$passwd) or die("ติดต่อ Host ไม่ได้");
//mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");

include("adodb/adodb.inc.php");
$db = NewADOConnection('mysql');
$db->NLS_DATE_FORMAT = 'RRRR-MM-DD HH24:MI:SS';
$db->charSet = 'AL32UTF8';
$db->Execute("ALTER SESSION SET NLS_DATE_FORMAT='RRRR-MM-DD HH24:MI:SS'");

$db->Connect($dbhost, $dbuser, $dbpassword, $dbname);

?>




geo.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="th" xml:lang="th">
<head>
<!--  <meta http-equiv="content-type" content="text/html; charset=tis-620" />
 -->
 <meta name="Author" content="num, dragon_html[at]hotmail.com" />
 <title>combobox เลือก จังหวัด ตำบล อำเภอ โดยใช้ jquery</title>
<style type="text/css">
/*<![CDATA[*/
#error {color:red}
#notice {color:green}
/*]]>*/
</style>
 
<!-- โหลด jquery.js มาไว้ในเครื่อง จะทำให้เว็บโหลดเร็วขึ้น -->
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
//<![CDATA[

var province_id = <?php echo isset($_POST['province_id'])
 ?intval($_POST['province_id']):'0'; ?>
;
var amphur_id = <?php echo isset($_POST['amphur_id'])
 ?intval($_POST['amphur_id']):'0'; ?>
;
var district_id = <?php echo isset($_POST['district_id'])
 ?intval($_POST['district_id']):'0'; ?>
;

function loadSelectBox(id,url,selected){
 $.get(
  url,{},function(data){
   $(id).html(data);
   if (selected!=0){
    $(id+' option[value='+selected+']').attr('selected','selected');
   }
  }
 );
}

$(function(){
 loadSelectBox(
   '#province_id',
   'geo_combo.php?load=province',
   province_id
 );
 loadSelectBox(
   '#amphur_id',
   'geo_combo.php?load=amphur&province_id='+province_id,
   amphur_id
 );
 loadSelectBox(
   '#district_id',
   'geo_combo.php?load=district&amphur_id='+amphur_id,
   district_id
 ); 
 $('#province_id').change(function(e){
  var selected = e.target.value;
  loadSelectBox(
   '#amphur_id',
   'geo_combo.php?load=amphur&province_id='+selected,
   null
  );
 });
 $('#amphur_id').change(function(e){
  var selected = e.target.value;
  loadSelectBox(
   '#district_id',
   'geo_combo.php?load=district&amphur_id='+selected,
   null
  );
 });
});
//]]>
</script>

<?

 //include('include.inc.php');
 //include_page('includes','header');
 include('includes/connect_adodb.inc.php');
 //include_page('includes','menu_left');
 //include_page('includes','content_top');

?>
</head>
<body>

<h1>combobox เลือกจังหวัด อำเภอ และตำบล โดยใช้ jquery</h1>
<?php
if (isset($_POST['title'])){

 

 

 

 

 

 

 //require_once 'config.inc.php';
 $e = array();
 $level = 'district';
 // validation 
 if (empty($_POST['title'])){
  $e[] = 'title ไม่ถูกต้อง';
 }
 if (empty($_POST['district_id'])){
  if (empty($_POST['amphur_id'])){   
   if (empty($_POST['province_id'])){
 //if (empty($_POST['district_id'])){
 // if (empty($_POST['amphur_id'])){   
 //  if (empty($_POST['province_id'])){
    $e[] = 'ไม่ได้ระบุจังหวัด';
   }
   $e[] = 'ไม่ได้ระบุอำเภอ';
   $e[] = 'ไม่ได้ระบุตำบล';
  } else {
   $amphur_id = intval($_POST['amphur_id']);
   //$r = $db->Execute("SELECT count(*) FROM \"amphur\" WHERE \"AMPHUR_ID\"=$amphur_id");
   $r = $db->Execute("SELECT count(*) FROM \"amphur\" WHERE \"AMPHUR_ID\"=$amphur_id");
   if ($r->RowCount()==0){
    $e[] = 'อำเภอไม่ถูกต้อง';
   } else {
    $r = $db->Execute("SELECT count(*) FROM \"district\" WHERE \"AMPHUR_ID\"=$amphur_id");
    if ($r->RowCount()>0){
     $e[] = 'ยังไม่ได้ระบุตำบล';
    } else {
     $level = 'amphur';
     //ไม่จำเป็นต้องระบตำบลเพราะอำเภอไม่มีตำบล
    }
   }
  }
 } else {
  $district_id = intval($_POST['district_id']);
  $r = $db->Execute("SELECT count(*) FROM \"district\" WHERE \"DISTRICT_ID\"=$district_id");
  if ($r->RowCount()==0){
   $e[] = 'ตำบลไม่ถูกต้อง';
  }
 }
 if (count($e)>0){
  echo '<div id="error">',implode('<br />',$e),'</div>';
 } else {
  echo "<div id=\"notice\">valid at level : $level</div>";
  $district_value = 0;
  if ($level == 'district'){
   $r = $db->Execute("SELECT * FROM \"district\" WHERE \"DISTRICT_ID\"=$district_id");
   $district_value = $district_id;
   $amphur_value = $r->fields['AMPHUR_ID'];
   $province_value = $r->fields['PROVINCE_ID'];
  } else {
   $r = $db->Execute("SELECT * FROM \"amphur\" WHERE \"AMPHUR_ID\"=$amphur_id"); 
   $amphur_value = $r->fields['AMPHUR_ID'];
   $province_value = $r->fields['PROVINCE_ID'];
  }
  //insert province_value,amphur_value,district_value and title into some table
 }
}

?>
<form action="?" method="post">
 news <input type="text" name="title" value="<?php textbox('title');?>" />
 <br />จังหวัด <select id="province_id" name="province_id"></select>
 <br />อำเภอ <select id="amphur_id" name="amphur_id"></select>
 <br />ตำบล <select id="district_id" name="district_id"></select>
 <br /> <input type="submit" value="submit" />
</form>

</body>
</html>
<?php
 function textbox($name){
  global $_POST;
  echo isset($_POST[$name])?htmlspecialchars($_POST[$name]):'';
 }
?>

 






geo_combo.php

<?php
 header('Content-type:text/html;charset=UTF-8');

 //include('include.inc.php');
 //include_page('includes','header');
 include('includes/connect_adodb.inc.php');
 //include_page('includes','menu_left');
 //include_page('includes','content_top');


 //require_once 'config.inc.php';
 if (!isset($_GET['load'])){
  $_GET['load'] = 'province';
 }
 switch($_GET['load']){
  case 'province':
   $row = $db->Execute("SELECT * FROM \"province\"") or report();   
   echo '<option value="0">-- เลือกจังหวัด --</option>';
   while (!$row->EOF){
    echo '<option value="',$row->fields['PROVINCE_ID'],'">',
     $row->fields['PROVINCE_NAME'],
    '</option>';
    $row->MoveNext();

   }
  break;
  case 'amphur':
   $province_id = isset($_GET['province_id'])?intval($_GET['province_id']):0;
   $row = $db->Execute("SELECT * FROM \"amphur\" WHERE \"PROVINCE_ID\"=$province_id") or report();   
   echo '<option value="0">-- เลือกอำเภอ --</option>';
   while (!$row->EOF){
    echo '<option value="',$row->fields['AMPHUR_ID'],'">',
     $row->fields['AMPHUR_NAME'],
    '</option>';
    $row->MoveNext();
   }
  break;
  case 'district':
   $amphur_id = isset($_GET['amphur_id'])?intval($_GET['amphur_id']):0;
   $row = $db->Execute("SELECT * FROM \"district\" WHERE \"AMPHUR_ID\"=$amphur_id") or report();   
   echo '<option value="0">-- เลือกตำบล --</option>';
   while (!$row->EOF){
    echo '<option value="',$row->fields['DISTRICT_ID'],'">',
     $row->fields['DISTRICT_NAME'],
    '</option>';
    $row->MoveNext();
   }
  break;    
 }
 function report(){
  return die('<option>'.htmlspecialchars(mysql_error()).'</option>');
 } 
?>
 


3 ความคิดเห็น

ถ้าใช้ frame work กับ adodb มันจะง่ายกว่ามั่งคับในการ switch database
1

ผมได้แก้ไขโค้ดเพิ่มเติมครับทำการแก้ไขโค้ด onchange ของกล่องเลือกจังหวัด
โดยเพิ่มคำสั่งลบรายการตำบลที่ได้เลือกในครั้งก่อนทิ้งด้วยครับ

    $('#province_id').change(function(e){
        var selected = e.target.value;
        loadSelectBox(
            '#amphur_id',
            'geo_combo.php?load=amphur&province_id='+selected,
            0
        );
        $('#district_id :not(option:first)').remove();//add
    });
2

    ย้ายเว็บละครับ
    http://web-programming-bookmark.blogspot.com/2010/11/dropdown-listbox-jquery.html

3
^