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 Document
02.
$(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,text
16.
async:false,
17.
success:
function
(jd) {
//แสดงข้อมูลเมื่อทำงานเสร็จ โดยใช้ each ของ jQuery
18.
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.php
04.
* Purpose: Convert mysql resultset data into JSON(http://json.org) format
05.
* Author: Adnan Siddiqi <kadnan@gmail.com>
06.
* License: PHP License
07.
* Date: Tuesday,June 21, 2006
08.
*
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