Screenshot
ในตัวอย่างนี้จะประกอบไปด้วย
- index.php เป็นไฟล์หน้าหลัก
- ajax.js เป็นไฟล์ที่รับส่งข้อมูลในการเลือก Select(List/Menu)
- getdata.php เป็นไฟล์ที่ใช้สำหรับดึงข้อมูลจาก Database
- mysql2json.class.php เป็น Class ที่ใช้เปลี่ยน Mysql เป็น JSON
**ในตัวอย่างนี้ใช้ jQuery จาก http://code.jquery.com/ อาจจะมีปัญหาหากไม่ได้ใช้งาน Internet นะครับ
ส่วนไฟล์ Database ได้แนบมากับบทความแล้วสามารถ Download ได้ด้านล่าง
index.php
01.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"03.<html xmlns="http://www.w3.org/1999/xhtml">04.<head>05.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />06.<title>jquery use json data</title>07.<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>08.<script type="text/javascript" src="ajax.js" ></script>09.</head>10. 11.<body onload="Add();">12.<label for="Proviance">จังหวัด</label>13.<select name="Proviance" id="Proviance">14.</select>15.<label for="ProID">รหัสจังหวัด</label>16.<input type="text" name="ProID" id="ProID" />17.<p>18.<label for="District">อำเภอ</label>19.<select name="District" id="District">20.</select>21.<label for="DisID">รหัสอำเภอ</label>22.<input type="text" name="DisID" id="DisID" />23.</P>24.<p>25.<label for="Subdistrict">ตำบล</label>26.<select name="Subdistrict" id="Subdistrict">27.</select>28.<label for="SubID">รหัสตำบล</label>29.<input type="text" name="SubID" id="SubID" />30.</P>31.<p>32.<label for="Postcode">รหัสไปรษณีย์</label>33.<select name="Postcode" id="Postcode">34.</select>35.<label for="PostID">รหัสไปรษณีย์</label>36.<input type="text" name="PostID" id="PostID" />37.</P>38.</body>39.</html>ajax.js
01.// JavaScript Document02.$(document).ready(function(){03.// ส่วนของจังหวัดเมื่อมีการเปลี่ยนแปลง04.$("#Proviance").change(function(){05.$("#Subdistrict").empty();//ล้างข้อมูล06.$("#Postcode").empty();//ล้างข้อมูล07.$("#DisID").val("");//ล้างข้อมูล08.$("#SubID").val("");//ล้างข้อมูล09.$("#PostID").val("");//ล้างข้อมูล10.$.ajax({11.url: "getdata.php",//ที่อยู่ของไฟล์เป้าหมาย12.global: false,13.type: "GET",//รูปแบบข้อมูลที่จะส่ง14.data: ({ID : $(this).val(),TYPE : "District"}), //ข้อมูลที่ส่ง { ชื่อตัวแปร : ค่าตัวแปร }15.dataType: "JSON", //รูปแบบข้อมูลที่ส่งกลับ xml,script,json,jsonp,text16.async:false,17.success: function(jd) { //แสดงข้อมูลเมื่อทำงานเสร็จ โดยใช้ each ของ jQuery18.var opt="<option value=\"0\" selected=\"selected\">---เลือกอำเภอ---</option>";19.$.each(jd, function(key, val){20.opt +="<option value='"+ val["AMPHUR_ID"] +"'>"+val["AMPHUR_NAME"]+"</option>"21.});22.$("#District").html( opt );//เพิ่มค่าลงใน Select ของอำเภอ23.}24.});25.$("#ProID").val($(this).val()); //กำหนดค่า ID ของจังหวัดที่เลือกให้กับ Textfield ของจังหวัด26.});27.// ส่วนของอำเภอเมื่อมีการเปลี่ยนแปลง28.$("#District").change(function(){29.$("#Subdistrict").empty();30.$("#Postcode").empty();31.$("#SubID").val("");32.$("#PostID").val("");33.$.ajax({34.url: "getdata.php",35.global: false,36.type: "GET",37.data: ({ID : $(this).val(),TYPE : "Subdistrict"}),38.dataType: "JSON",39.async:false,40.success: function(jd) {41.var opt="<option value=\"0\" selected=\"selected\">---เลือกตำบล---</option>";42.$.each(jd, function(key, val){43.opt +="<option value='"+ val["DISTRICT_ID"] +"'>"+val["DISTRICT_NAME"]+"</option>"44.});45.$("#Subdistrict").html( opt );46.}47.});48.$("#DisID").val($(this).val());49.});50.// ส่วนของตำบลเมื่อมีการเปลี่ยนแปลง51.$("#Subdistrict").change(function(){52.$("#PostID").val("");53.$.ajax({54.url: "getdata.php",55.type: "GET",56.data: ({ID : $("#District").val(),TYPE : "Postcode"}),57.dataType: "JSON",58.success: function(jd) {59.var opt="<option value=\"0\" selected=\"selected\">---เลือกรหัสไปรษณีย์---</option>";60.$.each(jd, function(key, val){61.opt +="<option value='"+ val["POST_CODE"] +"'>"+val["POST_CODE"]+"</option>"62.});63.$("#Postcode").html( opt );64.}65.});66.$("#SubID").val($("#Subdistrict").val());67.});68.// ส่วนของรหัสไปรษณีย์เมื่อมีการเปลี่ยนแปลง69.$("#Postcode").change(function(){70.$("#PostID").val($(this).val());71.});72.});73.//ส่วนของ function เพื่อเพิ่มข้อมูลจังหวัดเข้าไปก่อน74.function Add(){75.$.ajax({76.url: "getdata.php",77.global: false,78.type: "GET",79.data: ({TYPE : "Proviance"}),80.dataType: "JSON",81.async:false,82.success: function(jd) {83.var opt="<option value=\"0\" selected=\"selected\">---เลือกจังหวัด---</option>";84.$.each(jd, function(key, val){85.opt +="<option value='"+ val["PROVINCE_ID"] +"'>"+val["PROVINCE_NAME"]+"</option>"86.});87.$("#Proviance").html( opt );88.}89.});90.}getdata.php
01.<?02.require("mysql2json.class.php");03.$hostname_connection = "XXXXXX";04.$database_connection = "XXXXXX";05.$username_connection = "XXXXXX";06.$password_connection = "XXXXXX";07.$connection = mysql_connect($hostname_connection, $username_connection, $password_connection)or trigger_error(mysql_error(),E_USER_ERROR);08.mysql_query("SET character_set_results=utf8");09.mysql_query("SET character_set_client=utf8");10.mysql_query("SET character_set_connection=utf8");11.mysql_select_db($database_connection, $connection);12. 13.$ID=$_GET[ID];14.$type=$_GET[TYPE];15. 16.if($type=='Proviance'){17.$query="SELECT PROVINCE_ID, PROVINCE_NAME FROM province ORDER BY PROVINCE_NAME ASC ";18.}else if($type=='District') {19.$query="SELECT AMPHUR_ID, AMPHUR_NAME FROM amphur WHERE PROVINCE_ID='".$ID."'";20.} else if($type=='Subdistrict'){21.$query="SELECT DISTRICT_ID, DISTRICT_NAME FROM district WHERE AMPHUR_ID='".$ID."'";22.} else if($type=='Postcode'){23.$query="SELECT POST_CODE FROM amphur_postcode WHERE AMPHUR_ID='".$ID."'";24.}25.$result=mysql_query($query,$connection);26.$num=mysql_affected_rows();27. 28.$json=new mysql2json;29.$data=$json->getJSON($result,$num);30.echo $data;31.?>ต้องขอบอกไว้ก่อนนะครับ ไฟล์ mysql2json.class.php ผมโหลดมาจาก Internet นะครับ http://json.org
mysql2json.class.php
01.<?02./**03.* Filename: mysql2json.class.php04.* Purpose: Convert mysql resultset data into JSON(http://json.org) format05.* Author: Adnan Siddiqi <kadnan@gmail.com>06.* License: PHP License07.* Date: Tuesday,June 21, 200608.*09.*/10.class mysql2json{11.function getJSON($resultSet,$affectedRecords){12.$numberRows=0;13.$arrfieldName=array();14.$i=0;15.$json="";16.//print("Test");17.while ($i < mysql_num_fields($resultSet)) {18.$meta = mysql_fetch_field($resultSet, $i);19.if (!$meta) {20.}else{21.$arrfieldName[$i]=$meta->name;22.}23.$i++;24.}25.$i=0;26.$json="[\n";27.while($row=mysql_fetch_array($resultSet, MYSQL_NUM)) {28.$i++;29.$json.="{\n";30.for($r=0;$r < count($arrfieldName);$r++) {31.$json.=" \"$arrfieldName[$r]\" : \"$row[$r]\"";32.if($r < count($arrfieldName)-1){33.$json.=",\n";34.}else{35.$json.="\n";36.}37.}38.if($i!=$affectedRecords){39.$json.="\n},\n";40.}else{41.$json.="\n}\n";42.} 43.}44.$json.="\n]";45. 46.return $json;47.}48.}49.?>
No comments:
Post a Comment