XEM THỐNG KÊ ĐIỂM CHUẨN VÀO LỚP 10 CÁC TỈNH
Trong bài này tôi sẽ hướng dẫn các bạn cách xây dựng một chức năng tìm kiếm kì đơn giản, đây được xem là một chức năng mà đa số website nào cũng cần phải có. Bài viết này sẽ hướng dẫn các bạn cách thao tác với database dùng để truy vấn và lọc dữ liệu ở mức độ đơn giản nhất. Để có thể tiếp thu tốt các bạn cần phải có một số kiến thức cố định về php như jquery, php căn bản...vv.
Trước tiên bạn cần tạo một database tên là
basic
, sau đó sử dụng đoạn code dưới đây để tạo table và thêm một số dòng dữ liệu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| /* SQLyog Ultimate - MySQL GUI v8.21 MySQL - 5.5.20 : Database - basic ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE= '' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE= 'NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`basic` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; USE `basic`; /* Table structure for table `users` */ DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `user_id` int (11) unsigned NOT NULL AUTO_INCREMENT, `username` varchar (50) COLLATE utf8_unicode_ci DEFAULT NULL , ` password ` char (32) COLLATE utf8_unicode_ci DEFAULT NULL , `email` varchar (100) COLLATE utf8_unicode_ci DEFAULT NULL , `address` varchar (100) COLLATE utf8_unicode_ci DEFAULT NULL , PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE =utf8_unicode_ci; /*Data for the table `users` */ insert into `users`(`user_id`,`username`,` password `,`email`,`address`) values (1, 'kaito' , '456' , 'kaito@freetuts.net' , 'House USA' ),(2, 'thehaftheart' , '456' , 'thehaftheart@freetuts.net' , 'House USA' ),(3, 'superkaito' , '456' , 'superkaito@gmail.com' , 'House Viet Nam' ),(4, 'kaitosolo' , '1789' , 'kaito@yahô.com' , 'abc/fdc' ),(5, 'van canh' , '798' , 'vancanh@freetuts.net' , 'Bien hoa' ),(6, 'yongc' , '789' , 'yongc@freetuts.net' , 'Bien Hoa' ),(7, 'haftheart789' , '789' , 'haftheart789@yahoo.com' , 'Ha tinh' ),(8, 'yongc456' , '56465' , 'yongc789@gmail.com' , 'Bien Hoa 2' ),(9, 'van canh456' , '564564' , 'vancanh@gmail.com' , 'Bien Hoa 3' ),(10, 'kaitocode' , '87897' , 'kaitocode@yahoo.com' , 'TPHCM' ); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; |
2. Xây dựng Form tìm kiếm
Bạn tạo file
search.php
và xây dựng cấu trúc HTML cho form tìm kiếm như sau:- Gồm một
input
và một nútsubmit
là đủ cho bài học này rồi, do chúng ta phải truyền đối số vào url nên chúng ta đặt method của form bằng phương thức GET. - Action của Form tôi trỏ đến file hiện tại luôn nên tất cả code PHP xử lý tìm kiếm tôi sẽ đặt trong file này luôn.
1
2
3
4
5
6
7
8
9
10
11
12
13
| <html> <head> <title>Demo Search Basic by freetuts.net</title> </head> <body> <div align= "center" > <form action= "search.php" method= "get" > Search: <input type= "text" name= "search" /> <input type= "submit" name= "ok" value= "search" /> </form> </div> </body> </html> |
khâu chuẩn bị xem như hoàn tất, bây giờ đến phần sử dụng php kết nối với mysql để xử và show dữ liệu từ databaes ra ngoài.
3. Check submit form tìm kiếm & kết nối Database
Kiểm tra submir FORM
Trước tiên chúng ta cần kiểm tra người dùng có nhấn vào button tìm kiếm hay không? Bắt buộc chúng ta phải thực hiện bước này tại vì khi submit mới cần xử lý truy vấn database để lấy thông tin tìm kiếm.
Bình thường việc check Submit form ta sẽ dùng
$_POST
vì chúng ta sử dụng phương thức GET nên ta phải sử dụng biến $_GET
để kiểm tra. Nhưng trong bài này tôi sẽ thay thế $_GET
bằng một biến môi trường khác chính là $_REQUEST
có tác dụng là nhận request từ cả 2 phương thức trên.
1
2
3
4
5
6
7
8
| if (isset( $_REQUEST [ 'ok' ])) { $search = addslashes ( $_GET [ 'search' ]); if ( empty ( $search )) { echo "Yeu cau nhap du lieu vao o trong" ; } else { // Phan dung vong lap while show du lieu } } |
$_REQUEST['ok']
chính là tên của button tìm kiếm. Như vậy để kiểm tra người dùng click hay chưa thì ta chỉ cần kiểm tra tên của button đó có tồn tại hay không.Kết nối Database
Tiếp theo do chúng ta phải thao tác với database vì thế cần phải thực hiện việc kết nối như sau.
1
2
3
4
5
6
7
8
| if (isset( $_REQUEST [ 'ok' ])){ // Kết nối sql mysql_connect( "localhost" , "root" , "vertrigo" ); // Chọn database mysql_select_db( "basic" ); } |
Các bạn thay đổi các thông số cho phù hợp với web server của các bạn nhé. Kết nối db xong thì chúng ta có thể gọi câu truy vấn và truy xuất dữ liệu một cách thoải mái.
Tôi sử dụng module mysql cho đơn giản, nếu bạn muốn kết nối bằng mysqli thì tham khảo bài kết nối CSDL với Mysqli.
4. Xử lý tìm kiếm với lệnh Like trong MySql
Trước tiên bạn cần hiểu ý nghĩa về lệnh LIKE trong MySQL, đây là một lệnh dùng để tìm kiếm dữ liệu ở mức độ gần giống, để rõ hơn thì bạn xem bài lệnh LIKE trong MySQL.
Tất cả những đoạn code bên dưới bạn sẽ đặt trong đoạn code kiểm tra submit form mà ở bước 2 ta đã làm. Như vậy ta có fullcode cho phần PHP như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| if (isset( $_REQUEST [ 'ok' ])) { // Gán hàm addslashes để chống sql injection $search = addslashes ( $_GET [ 'search' ]); // Dùng câu lênh like trong sql và sứ dụng toán tử % của php để tìm kiếm dữ liệu chính xác hơn. $query = "select * from users where username like '%$search%'" ; // Kết nối sql mysql_connect( "localhost" , "root" , "vertrigo" ); // Chọn database mysql_select_db( "basic" ); // Thực thi câu truy vấn $sql = mysql_query( $query ); // Đếm số đong trả về trong sql. $num = mysql_num_rows( $sql ); // Nếu $search rỗng thì báo lỗi tức là người dùng chưa nhập liệu mà đã nhấn submit. if ( empty ( $search )) { echo "Yeu cau nhap du lieu vao o trong" ; } else { // Ngược lại nếu người dùng nhập liệu thì tiến hành xứ lý show dữ liệu. // Nếu $num > 0 hoặc $search khác rỗng tức là có dữ liệu mối show ra nhé, ngược lại thì báo lỗi. if ( $num > 0 && $search != "" ) { // Dùng $num để đếm số dòng trả về. echo "$num ket qua tra ve voi tu khoa <b>$search</b>" ; // Vòng lặp while & mysql_fetch_assoc dùng để lấy toàn bộ dữ liệu có trong table và trả về dữ liệu ở dạng array. while ( $row = mysql_fetch_assoc( $sql )) { $id = $row [ 'user_id' ]; $username = $row [ 'username' ]; $password = $row [ 'password' ]; $email = $row [ 'email' ]; $address = $row [ 'address' ]; echo "<br /><h3>Ho ten: $username (id: $id)</h3><br />Mat Khau: $password</br />Email: $email</br />Dia chi: $address</br />" ; } } else { echo "Khong tim thay ket qua!" ; } } } |
Trong phần ghi chú mình đã giải thích rồi nên các bạn đọc trong đó nhé, và đây là FULL code cho HTML lẫn PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| <html> <head> <title>Demo Search Basic by sangkienkinhnghiemhaynet</title> </head> <body> <div align= "center" > <form action= "search.php" method= "get" > Search: <input type= "text" name= "search" /> <input type= "submit" name= "ok" value= "search" /> </form> </div> <hr /> <?php if (isset( $_REQUEST [ 'ok' ])) { // Gán hàm addslashes để chống sql injection $search = addslashes ( $_GET [ 'search' ]); // Dùng câu lênh like trong sql và sứ dụng toán tử % của php để tìm kiếm dữ liệu chính xác hơn. $query = "select * from users where username like '%$search%'" ; // Kết nối sql mysql_connect( "localhost" , "root" , "vertrigo" ); // Chọn database mysql_select_db( "basic" ); // Thực thi câu truy vấn $sql = mysql_query( $query ); // Đếm số đong trả về trong sql. $num = mysql_num_rows( $sql ); // Nếu $search rỗng thì báo lỗi tức là người dùng chưa nhập liệu mà đã nhấn submit. if ( empty ( $search )) { echo "Yeu cau nhap du lieu vao o trong" ; } else { // Ngược lại nếu người dùng nhập liệu thì tiến hành xứ lý show dữ liệu. // Nếu $num > 0 hoặc $search khác rỗng tức là có dữ liệu mối show ra nhé, ngược lại thì báo lỗi. if ( $num > 0 && $search != "" ) { // Dùng $num để đếm số dòng trả về. echo "$num ket qua tra ve voi tu khoa <b>$search</b>" ; // Vòng lặp while & mysql_fetch_assoc dùng để lấy toàn bộ dữ liệu có trong table và trả về dữ liệu ở dạng array. while ( $row = mysql_fetch_assoc( $sql )) { $id = $row [ 'user_id' ]; $username = $row [ 'username' ]; $password = $row [ 'password' ]; $email = $row [ 'email' ]; $address = $row [ 'address' ]; echo "<br /><h3>Ho ten: $username (id: $id)</h3><br />Mat Khau: $password</br />Email: $email</br />Dia chi: $address</br />" ; } } else { echo "Khong tim thay ket qua!" ; } } } ?> </body> </html> |
Lời kết:
Hy vọng qua bài viết đơn giản này sẽ giúp các bạn có cái nhìn toàn diện hơn về cách xây dựng một chức năng tìm kiếm với lệnh LIKE trong php và MYSQL, từ đó đào sâu và phát triển hơn nửa để có thể đáp ứng được một số yêu cầu tìm kiếm dữ liệu chuyên sâu hơn. Hẹn gặp các bạn ở các bài tiếp theo ^^
Chào mừng bạn đến với
XEM ĐIỂM CHUẨN VÀO LỚP 10 CÁC TỈNH
Xem điểm chuẩn lớp 10
Hướng dẫn mua bán BITCOIN => Bấm vào đây
Sách hay bấm vào đây
0 nhận xét Blogger 0 Facebook
Post a Comment
Cám ơn bạn đã phản hồi