Bài giảng Lập trình web - Chương 5: PHP và MySQL - Trần Công Án (Phần 2)

Tóm tắt Bài giảng Lập trình web - Chương 5: PHP và MySQL - Trần Công Án (Phần 2): ...từ CSDL. Script này sẽ được chèn vào chỗ giá trị của thuộc tính src. (get_img.php là PHP script, id là khóa hay tên của hình ảnh, dùng để truy vấn hình ảnh từ CSDL) TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 15 [CT428] Chương 5.2 – PHP Adv Lưu hình ảnh vào CSDL Hiển thị hình...cho "$row[title]. $row[author] ($row[year])."; 34 35 if (mysql_num_rows($result) == 0) echo "No title found"; 36 return $paging; 37 } //search() 38 39 ?> 40 TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 22 [CT428] Chương 5.2 – PHP Adv Kỹ thuật phân trang Ví dụ... – PHP Adv AJAX – Asynchronous JavaScript and XML Mô hình giao tiếp bất đồng bộ với AJAX Mô Hình Giao Tiếp Bất Đồng Bộ Với AJAX 1. Một sự kiện phát sinh nhu cầu cập nhật dữ liệu (hoặc giao diện), nhu cầu này sẽ được xử lý bởi một đoạn mã xử lý sự kiện. 2. Đoạn mã xử lý sự kiện sẽ tạo 1 đối tượ...

pdf39 trang | Chia sẻ: havih72 | Lượt xem: 377 | Lượt tải: 1download
Nội dung tài liệu Bài giảng Lập trình web - Chương 5: PHP và MySQL - Trần Công Án (Phần 2), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
 CNTT&TT) [CT428] Chương 5.2 – PHP Adv 13
Page 1 of 1/Applications/XAMPP/xamppfiles/htdocs/LTW428/connection.inc
Saved: 3/18/14, 0:46:55 Printed For: Tran Cong An
<?php	1
	 /* connection.inc */	2
	 $hostname = "localhost";	3
	 $username = "root";	4
	 $passwor = "";	5
	 $database = "ltweb"	6
?>7
[CT428] Chương 5.2 – PHP Adv
Lưu hình ảnh vào CSDL
Mã PHP để chèn hình ảnh vào CSDL
Lưu Hình Ảnh Vào CSDL – PHP Page 1 of 1/Applications/XAMPP/xamppfiles/hLTW428/php-adv/upload-img-db.phpSaved: 3/21/14, 11:26:44 Printed For: Tran Cong An
<?php	 /* upload-db.php */	1
	 require 'connect-select-db.php';	 //connected to DBMS + select DB	 	2
	 if (isset($_FILES["img_file"]["name"]) &&	3
	 	 getimagesize($_FILES['img_file']['tmp_name']) != false)	4
	 {	5
	 	 //CHECK CONTRAINTS if any ...	6
	 	 $image = file_get_contents($_FILES['img_file']['tmp_name']);	7
	 	 $image = addslashes($image);	8
	 	 $imgname = $_FILES["img_file"]["name"];	9
	 	 	10
	 	 mysql_query("INSERT INTO images VALUES ('$imgname', '$image')");	11
	 	 	 or die("Cannot insert image into DB: " . mysql_error());	12
	 	13
	 	 echo "Uploaded image: ";	14
	 }	15
	 else 	16
	 	 echo "No image has been uploaded";	17
?>18
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 14
[CT428] Chương 5.2 – PHP Adv
Lưu hình ảnh vào CSDL
Hiển thị hình ảnh được lưu trong CSDL
Hiển Thị Hình Ảnh Được Lưu Trong CSDL
I Đọc và hiển thị hình ảnh từ CSDL:
I Gán giá trị cho thuộc tính src của thẻ là nội dung của ảnh.
⇒ Cần phải có 1 PHP script thực hiện việc đọc và trả về nội dung hình
ảnh từ CSDL. Script này sẽ được chèn vào chỗ giá trị của thuộc tính
src.
(get_img.php là PHP script, id là khóa hay tên của hình ảnh, dùng
để truy vấn hình ảnh từ CSDL)
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 15
[CT428] Chương 5.2 – PHP Adv
Lưu hình ảnh vào CSDL
Hiển thị hình ảnh được lưu trong CSDL
Đọc Và Trả Về Dữ Liệu Hình Ảnh Từ CSDLPage 1 of 1/Applications/XAMPP/xamppfiles/htdocs/LTW428/php-adv/get_img.phpSaved: 3/21/14, 11:34:31 Printed For: Tran Cong An
<?php	 /* get_img.php */	1
	 if (isset($_REQUEST['name'])) {	 	2
	 	 require "connect-select-db.php";	3
	 	 	4
	 	 $query = "SELECT * FROM images WHERE iname='$_REQUEST[name]'";	5
	 	 $q_result = mysql_query($query) 	6
	 	 	 or die("Data retrieval failed" . mysql_error());	 	 	 	7
	 	 $row = mysql_fetch_array($q_result);	8
	 	 if ($row) {	9
	 	 	 header("Content-type: image/jpeg");	10
	 	 	 echo $row['image'];	11
	 	 }	12
	 	 else 	13
	 	 	 echo "Image '$_REQUEST[name]' is not found";	14
	 }	15
	 else	16
	 	 echo "Image name is required"	17
?>18
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 16
[CT428] Chương 5.2 – PHP Adv
Lưu hình ảnh vào CSDL
Hiển thị hình ảnh được lưu trong CSDL
Đọc Và Trả Về Dữ Liệu Hình Ảnh Từ CSDL
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 17
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Các bước trong kỹ thuật phân trang
Kỹ Thuật Phân Trang
I Tổ chức phân trang hiển thị kết quả thường gồm các bước:
1. Tính tổng số mẩu tin cần hiển thị: $total_record.
2. Xác định số lượng mẫu tin tối đa được hiển thị trên trang:
$reccord_per_page.
3. Lưu giữ trang hiện hành (dùng biến ẩn – hidden, hoặc truyền trực
tiếp qua phương thức GET): $page
4. Truy vấn CSDL: dùng mệnh đề LIMIT start number_of_record
để chỉ định số mẫu tin cần truy vấn.
5. Xác định liên kết đến Trang kế tiếp hoặc Trang trước đó.
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 18
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Ví dụ – Tìm kiếm sách với phân trang
Ví Dụ – Tìm Kiếm Sách Với Phân Trang
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 19
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Ví dụ – Tìm kiếm sách với phân trang
Tổ chức
I Trang chính:
I Hiển thị form để nhập từ khóa + Nút tìm kiếm
I Gọi hàm search() để tìm sách, hiển thị kết quả tìm kiếm, và lấy
thông tin phân trang.
I Gọi hàm page_nav_links() để tạo l/kết đến Trang trước, Trang kế.
I Các hàm PHP phụ trợ:
I compute_paging(search_cond ): tính các thông số phân trang.
I search(search_kw ): tìm kiếm, hiển thị kết quả, và trả về các
thông số phân trang (có sử dụng hàm compute_paging()).
I page_nav_links(paging_info, search_kw ): tạo các liên kết đến
Trang trước, Trang kế.
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 20
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Ví dụ – Trang chính
Tìm Kiếm Sách – Trang Chính Page 1 of 1/Applications/XAMPP/xamppfiles/h/php-adv/title-search-paging.phpSaved: 3/21/14, 22:23:18 Printed For: Tran Cong An
	 	1
	 	 	2
	 	 <input type="text" size="40" name="search_kw" 	3
	 	 	 value="<? empty($_REQUEST['search_kw']) || 	4
	 	 	 	 	 	 	 	 print $_REQUEST['search_kw'];?>"/>	5
	 	 	6
	 	 	7
	 	 Search result	8
	 	 <?php	9
	 	 	 if (isset($_REQUEST['search_kw'])) {	10
	 	 	 	 include 'title-search-paging-func.php';	11
	 	 	 	 $paging = search($_REQUEST['search_kw']);	12
	13
	 	 	 	 echo "";	 	 //links to next/prior page	14
	 	 	 	 page_nav_links($paging, $_REQUEST['search_kw']);	 	15
	 	 	 }	16
	 	 ?>	17
	18
19
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 21
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Ví dụ – Hàm compute_paging()
Tìm Kiếm Sách – Hàm compute_paging()Page 1 of 1/Applications/XAMPP/xamppfiles/hadv/title-search-paging-func.phpSaved: 3/21/14, 23:32:29 Printed For: Tran Cong An
<?php	 /* title-search-paging-func.php */	1
	 $record_ppage = 2;	2
	 function compute_paging($s_cond) {	3
	 	 global $record_ppage;	4
	5
	 	 $c_query = "SELECT count(*) FROM classics " .	6
	 	 	 	 	 	 "WHERE title LIKE '%$s_cond%'";	7
	 	 $c_result = mysql_query($c_query);	8
	 	 $row = mysql_fetch_array($c_result);	9
	 	 	10
	 	 $p_total = ceil($row[0]/$record_ppage);	11
	 	 $page = (isset($_REQUEST["page"]))? $_REQUEST["page"] : 1; 	 	 	12
	 	 $start = ($page - 1) * $record_ppage;	13
	 	 $p_next = ($page > 1)? $page - 1 : 0; 	14
	 	 $p_pre = ($page < $p_total)? $page + 1 : 0; 	15
	16
	 	 return array("p_total"=>$p_total, "p_no"=>$page, "p_start"=>$start,	17
	 	 	 	 "p_prev"=>$p_next, "p_next"=>$p_pre, "total"=>$row[0]);	18
	 }	//compute_paging()	19
	20
	21
	 function search($keyword) {	22
	 	 global $record_ppage;	23
	 	 require "connect-select-db.php";	24
	 	 $s_cond = str_replace(" ", "%' OR title LIKE '%", trim($keyword));	25
	26
	 	 $paging = compute_paging($s_cond);	27
	 	 $query = "SELECT * FROM classics WHERE title LIKE '%$s_cond%'" .	28
	 	 	 " LIMIT $paging[p_start], $record_ppage";	29
	 	 $result = mysql_query($query, $conn) 	30
	 	 	 or die ("DB accessed failed: " . mysql_error());	31
	32
	 	 while ($row = mysql_fetch_array($result)) 	33
	 	 	 echo "$row[title]. $row[author] ($row[year]).";	34
	35
	 	 if (mysql_num_rows($result) == 0)	echo "No title found";	36
	 	 return $paging;	37
	 }	//search()	38
	39
?>	40
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 22
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Ví dụ – Hàm search()
Tìm Kiếm Sách – Hàm search()
Page 1 of 1/Applications/XAMPP/xamppfiles/hadv/title-search-paging-func.php
Saved: 3/21/14, 23:32:29 Printed For: Tran Cong An
<?php	 /* title-search-paging-func.php */	1
	 $record_ppage = 2;	2
	 function compute_paging($s_cond) {	3
	 	 global $record_ppage;	4
	5
	 	 $c_query = "SELECT count(*) FROM classics " .	6
	 	 	 	 	 	 "WHERE title LIKE '%$s_cond%'";	7
	 	 $c_result = mysql_query($c_query);	8
	 	 $row = mysql_fetch_array($c_result);	9
	 	 	10
	 	 $p_total = ceil($row[0]/$record_ppage);	11
	 	 $page = (isset($_REQUEST["page"]))? $_REQUEST["page"] : 1; 	 	 	12
	 	 $start = ($page - 1) * $record_ppage;	13
	 	 $p_next = ($page > 1)? $page - 1 : 0; 	14
	 	 $p_pre = ($page < $p_total)? $page + 1 : 0; 	15
	16
	 	 return array("p_total"=>$p_total, "p_no"=>$page, "p_start"=>$start,	17
	 	 	 	 "p_prev"=>$p_next, "p_next"=>$p_pre, "total"=>$row[0]);	18
	 }	//compute_paging()	19
	20
	21
	 function search($keyword) {	22
	 	 global $record_ppage;	23
	 	 	24
	 	 require "connect-select-db.php";	25
	 	 $s_cond = str_replace(" ", "%' OR title LIKE '%", trim($keyword));	26
	27
	 	 $paging = compute_paging($s_cond);	28
	 	 $query = "SELECT * FROM classics WHERE title LIKE '%$s_cond%'" .	29
	 	 	 " LIMIT $paging[p_start], $record_ppage";	30
	 	 $result = mysql_query($query, $conn) 	31
	 	 	 or die ("DB accessed failed: " . mysql_error());	32
	33
	 	 while ($row = mysql_fetch_array($result)) 	34
	 	 	 echo "$row[title]. $row[author] ($row[year]).";	35
	36
	 	 if (mysql_num_rows($result) == 0)	echo "No title found";	37
	 	 return $paging;	38
	 }	//search()	39
	40
?>	41TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 23
[CT428] Chương 5.2 – PHP Adv
Kỹ thuật phân trang
Ví dụ – Hàm page_nav_links()
Tìm Kiếm Sách – Hàm page_nav_links()
Page 1 of 1/Applications/XAMPP/xamppfiles/hadv/title-search-paging-func.php
Saved: 3/21/14, 22:23:12 Printed For: Tran Cong An
<?php	 /* title-search-paging-func.php */	1
	2
	 //compute total pages, the start record to be retrieved 	3
	 function compute_paging($s_cond) {	4
	 	 global $record_ppage;	5
	6
	 	 $c_query = "SELECT count(*) FROM classics " .	7
	 	 	 	 	 	 "WHERE title LIKE '%$s_cond%'";	8
	 	 $c_result = mysql_query($c_query);	9
	 	 $row = mysql_fetch_array($c_result);	10
	11
	 	 $p_total = ceil($row[0]/$record_ppage);	12
	 	 $page = (isset($_REQUEST["page"]))? $_REQUEST["page"] : 1; 	 	 	13
	 	 $start = ($page - 1) * $record_ppage;	14
	 	 $p_next = ($page > 1)? $page - 1 : 0; 	15
	 	 $p_pre = ($page < $p_total)? $page + 1 : 0; 	16
	17
	 	 return array("p_total"=>$p_total, "p_no"=>$page, "p_start"=>$start,	18
	 	 	 	 "p_prev"=>$p_next, "p_next"=>$p_pre, "total"=>$row[0]);	19
	 }	//compute_paging()	20
	 	21
	 //generate page-navigation links	22
	 function page_nav_links($paging, $search_kw) {	23
	 	 echo "Page $paging[p_no]/$paging[p_total]:   ";	24
	 	25
	 	 if ($paging['p_prev'] > 0) {	 	 //previous	26
	 	 	 echo "<a href='title-search-paging.php?search_kw=" . 	27
	 	 	 	 $_REQUEST['search_kw'] . 	28
	 	 	 	 "&page=" . $paging['p_prev'] ."'>Previous   ";	29
	 	 }	30
	 	 	31
	 	 if ($paging['p_next'] > 0) {	 	 //next	32
	 	 	 echo "<a href='title-search-paging.php?search_kw=" .	33
	 	 	 	 $_REQUEST['search_kw'] . 	34
	 	 	 	 "&page=" . $paging['p_next'] ."'>Next";	35
	 	 }	36
	 } //page_nav_generation()	37
?>	38
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 24
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
AJAX – Asynchronous JavaScript And XML
I Là một kỹ thuật giao tiếp bất đồng bộ giữa web client và web
browser dựa trên JavaScript.
I Đặc điểm:
I Giao tiếp với web server ở chế độ background.
I Cho phép cập nhật một phần trang web.
I Người dùng không phải chờ đợi khi web browser và web server thực
hiện giao tiếp.
I Tránh được cách tiếp cận "click-wait-refresh" thông thường.
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 25
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Giao tiếp web đồng bộ – Synchronous web communication
Giao tiếp web đồng bộ
I Người sử dụng phải chờ khi trang web đang load.
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 26
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Giao tiếp web bất đồng bộ – Asynchronous web communication
Giao tiếp web bất đồng bộ
I Người sử dụng có thể tiếp tục tương tác với trang web khi trang
web đang load dữ liệu, hỗ trợ bởi AJAX.
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 27
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Mô hình giao tiếp bất đồng bộ với AJAX
Mô Hình Giao Tiếp Bất Đồng Bộ Vói AJAX
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 28
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Mô hình giao tiếp bất đồng bộ với AJAX
Mô Hình Giao Tiếp Bất Đồng Bộ Với AJAX
1. Một sự kiện phát sinh nhu cầu cập nhật dữ liệu (hoặc giao diện), nhu cầu
này sẽ được xử lý bởi một đoạn mã xử lý sự kiện.
2. Đoạn mã xử lý sự kiện sẽ tạo 1 đối tượng XMLHttpRequest.
3. XMLHttpRequest yêu cầu 1 trang web (PHP) từ server; đồng thời chỉ
định 1 hàm callback để xử lý kết quả trả về sau này.
4. Trang web đáp ứng yêu cầu sử dụng dữ liệu nhận được từ client (thông
qua đối tượng XMLHttpRequest) và trả về kết quả.
5. Đối tượng XMLHttpRequest phát sinh một sự kiện để kích hoạt hàm
callback.
6. Hàm callback nhận kết quả trả về và thực hiện thay đổi trang web nếu có
(thường sử dụng mô hình DOM).
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 29
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Đối tượng XMLHttpRequest
Đối Tượng XMLHttpRequest
I Dùng để gửi yêu cầu cho server, chỉ định hàm callback và nhận kết
quả trả về.
I Hầu hết các trình duyệt đề hỗ trợ đối tượng XMLHttpRequest,
riêng IE5 và IE6 dùng ActiveXObject.
Page 1 of 1/Applications/XAMPP/xamppfiles/hcs/LTW428/php-adv/code-print.php
Saved: 4/2/14, 0:52:40 Printed For: Tran Cong An
 	2
 function createXHR() {	3
 if (window.XMLHttpRequest) {	4
 //AJAX for IE7+, FF, Chrome, Opera, Safari	5
 return new XMLHttpRequest();	6
 }	7
 else { //AJAX for IE6, IE5	8
 return new ActiveXObject("Microsoft.XMLHTTP"); 	9
 }	10
 }	11
 	12
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 30
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ Đơn Giản
Ví Dụ Đơn Giản
Page 1 of 1/Applications/XAMPP/xamppfiles/hs/LTW428/php-adv/simple-ajax.php
Saved: 4/2/14, 1:19:36 Printed For: Tran Cong An
 	1
	2
 	3
	4
 	5
	6
 	7
 	8
 <input type="button" name="mybutton" value="Fire AJAX"	9
 onclick="fireAJAX(myform.myname.value);">	10
 	11
 	12
	13
14
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 31
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ Đơn Giản
Ví Dụ Đơn Giản Page 1 of 1/Applications/XAMPP/xamppfiles/hcs/LTW428/php-adv/simple-ajax.jsSaved: 4/2/14, 1:23:26 Printed For: Tran Cong An
/* simple-ajax.js */	1
function fireAJAX(name) {	2
 var xmlhttp = createXHR();	3
 xmlhttp.onreadystatechange = function() {	4
 if (xmlhttp.readyState==4 && xmlhttp.status==200) {	5
 document.getElementById("msg").innerHTML = xmlhttp.responseText;	6
 }	7
 }	8
 xmlhttp.open("GET", "hello-name.php?name=" + name, true);	9
 xmlhttp.send();	10
}	11
	12
function createXHR() {	13
 if (window.XMLHttpRequest)	14
 return new XMLHttpRequest();	15
 else	16
 return new ActiveXObject("Microsoft.XMLHTTP"); 	17
}18
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 32
Page 1 of 1/Applications/XAMPP/xamppfiles/hcs/LTW428/php-adv/hello-name.php
Saved: 4/2/14, 1:20:46 Printed For: Tran Cong An
<?php /* hello-name.php */	1
 if (isset($_GET['name'])) {	2
 echo "Hello ", $_GET['name'], "";	3
 }	4
?>5
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ 2 – Tạo Dropdown List phụ thuộc nhau
Dropdown List Phụ Thuộc Nhau – Mô Tả
+--------+-------------+
| matinh | tentinh |
+--------+-------------+
| 1 | Cần Thơ |
| 2 | Sóc Trăng |
| 3 | Bạc Liêu |
+--------+-------------+
3 rows in set (0.05 sec)
mysql> select * from huyen;
+---------+---------------+--------+
| mahuyen | tenhuyen | matinh |
+---------+---------------+--------+
| 1 | Cờ Đỏ | 1 |
| 2 | Ô Môn | 1 |
| 3 | Châu Thành | 1 |
| 4 | Long Phú | 2 |
| 5 | Thạnh Trị | 2 |
| 6 | Ngã Năm | 2 |
| 7 | Trần Đề | 2 |
| 8 | Vĩnh Châu | 3 |
| 9 | Giá Rai | 3 |
+---------+---------------+--------+
9 rows in set (0.00 sec)
mysql> 
+---------+---------------+--------+
| mahuyen | tenhuyen | matinh |
+---------+---------------+--------+
| 1 | Cờ Đỏ | 1 |
| 2 | Ô Môn | 1 |
| 3 | Châu Thành | 1 |
| 4 | Long Phú | 2 |
| 5 | Thạnh Trị | 2 |
| 6 | Ngã Năm | 2 |
| 7 | Trần Đề | 2 |
| 8 | Vĩnh Châu | 3 |
| 9 | Giá Rai | 3 |
+---------+---------------+--------+
9 rows in set (0.00 sec)
mysql> 
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 33
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ 2 – Tạo Dropdown List phụ thuộc nhau
Dropdown List Phụ Thuộc Nhau Page 1 of 1/Applications/XAMPP/xamppfiles/hLTW428/php-adv/dropdown-ajax.phpSaved: 4/2/14, 3:22:57 Printed For: Tran Cong An
 	1
 	2
 	3
 	4
 	5
 	6
 	7
 	8
 	9
 	10
 	11
 Chọn tỉnh 	12
 	13
 Chọn huyện 	14
 	15
 	16
 	17
18
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 34
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ 2 – Tạo Dropdown List phụ thuộc nhau
Dropdown List Phụ Thuộc Nhau
Page 1 of 1/Applications/XAMPP/xamppfiles/hp-adv/dropdown-php-functions.php
Saved: 4/2/14, 3:35:40 Printed For: Tran Cong An
<?php	 /* dropdown-php-function.php */	1
	2
 function gen_tinh_options() {	3
 require_once "connect-select-db.php";	4
 	5
 $query = "SELECT * FROM tinh";	6
 $result = mysql_query($query)	7
 or die("SELECT failed: " . mysql_error());	8
 	9
 echo "";	10
 while ($row = mysql_fetch_array($result)) {	11
 echo "", $row['tentinh'], 12
"";	
 }	13
 }	14
?>15
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 35
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ 2 – Tạo Dropdown List phụ thuộc nhau
Dropdown List Phụ Thuộc Nhau
Page 1 of 1/Applications/XAMPP/xamppfiles/hp-adv/dropdown-ajax-functions.js
Saved: 4/2/14, 3:49:19 Printed For: Tran Cong An
/* dropdown-ajax-function.js */	29
function chonTinh(matinh) {	 	30
 if (window.XMLHttpRequest) 	31
 xmlhttp = new XMLHttpRequest();	32
 else 	33
 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 	34
 	35
 xmlhttp.onreadystatechange = function() {	36
 if (xmlhttp.readyState==4 && xmlhttp.status==200) {	37
 refreshHuyen(f_profile.s_huyen, xmlhttp.responseText);	38
 }	39
 }	40
 xmlhttp.open("GET", "get-huyen.php?matinh=" + matinh, true);	41
 xmlhttp.send();	42
}43
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 36
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ 2 – Tạo Dropdown List phụ thuộc nhau
Dropdown List Phụ Thuộc Nhau
Page 1 of 1/Applications/XAMPP/xamppfiles/hocs/LTW428/php-adv/get-huyen.php
Saved: 4/2/14, 3:35:13 Printed For: Tran Cong An
<?php	 	 /* get-huyen.php */	1
	2
 if (isset($_GET['matinh'])) {	3
 require_once "connect-select-db.php";	4
 $matinh = $_GET['matinh'];	5
	6
 $result = mysql_query("SELECT * FROM huyen WHERE matinh=$matinh")	7
 or die("Retrieve data failed: " . mysql_error());	8
 	9
 while ($row = mysql_fetch_array($result)) {	10
 echo "$row[mahuyen]&&$row[tenhuyen];;";	11
 }	12
 }	13
	14
?>15
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 37
[CT428] Chương 5.2 – PHP Adv
AJAX – Asynchronous JavaScript and XML
Ví Dụ 2 – Tạo Dropdown List phụ thuộc nhau
Dropdown List Phụ Thuộc Nhau Page 1 of 1/Applications/XAMPP/xamppfiles/hp-adv/dropdown-ajax-functions.jsSaved: 4/2/14, 3:49:19 Printed For: Tran Cong An
/* dropdown-ajax-function.js */	9
function refreshHuyen(selectHuyen, data) {	 	10
	 //data: maHuyen&&tenHuyen;;maHuyen&&tenHuyen;;...	11
 //remove all items	12
 var length = selectHuyen.options.length;	13
 for (i=0; i<length; i++)	14
 selectHuyen.remove(0);	15
 	16
 //add new data	17
 data = data.split(";;");	18
 for (i=0; i<data.length-1; i++) {	19
 var huyen = document.createElement("option");	20
 var itemData = data[i].split("&&");	21
 huyen.value = itemData[0];	22
 huyen.text = itemData[1];	23
 selectHuyen.add(huyen);	24
 }	25
}	26
TS. Trần Công Án (Khoa CNTT&TT) [CT428] Chương 5.2 – PHP Adv 38

File đính kèm:

  • pdfbai_giang_lap_trinh_web_chuong_5_php_va_mysql_tran_cong_an_p.pdf