1. Xây dựng Cơ sở dữ liệu để tìm kiếm
/*
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út submit 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.
<?php
Trong đoạn code trên mình có khai báo một vị trí dùng để code PHP, như vậy ta sẽ code PHP xử lý tìm kiếm tại vị trí đó. 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ừ database ra ngoài.
3. Cần phải hiểu trước khi làm bài
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 biến $_POST nhưng 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.
if (isset($_REQUEST['ok'])) { $search = addslashes($_GET['search']); if (empty($search)) { echo "Yeu cau nhap du lieu vao o trong"; } else { }
}
4. Xử lý tìm kiếm với lệnh Like trong MySql
<?php if (isset($_REQUEST['ok'])) { $search = addslashes($_GET['search']);
if (empty($search)) { echo "Yeu cau nhap du lieu vao o trong"; } else { $query = "select * from users where username like '%$search%'";
mysql_connect("localhost", "root", "vertrigo", "basic");
$sql = mysql_query($query);
$num = mysql_num_rows($sql);
{
while ($row = mysql_fetch_assoc($sql)) { } } else { echo "Khong tim thay ket qua!"; } } }
Như vậy là xong rồi đấy 🙂
5. 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 ^^.