Hướng dẫn search() php

Hôm nay mình giới thiệu cho các bạn code tìm kiếm trong php

Bạn đang tìm code tìm kiếm , không biết tạo code tìm kiếm như nào trong php . Bạn hãy tham khảo bài viết này mình tổng hợp lại để giúp các bạn quen và thành thục hơn với lập trình

Nội dung chính

  • Hôm nay mình giới thiệu cho các bạn code tìm kiếm trong php
  • Cách 2 nếu dùng theo cách 1 không được
  • 1. Xây dựng Cơ sở dữ liệu để tìm kiếm
  • 2. Xây dựng Form tìm kiếm
  • 3. Cần phải hiểu trước khi làm bài
  • 4. Xử lý tìm kiếm với lệnh Like trong MySql
  • 5. Lời kết

Đầu tiên chúng ta tạo 1 form tìm kiếm

Hướng dẫn search() php

Có code như sau 

<form method = “post” action = “timkiem.php”>
<input type = “text” giữ chỗ name = “Nhập từ khóa tìm kiếm” = “khóa_tìm_kiếm”>
<button type = “submit” name = “TÌM”> Tìm kiếm </ button>
</ form>

và code của file timkiem.php như sau

<? php
if (isset ($ _ POST [ ‘timkiem’])) {
$ key = addslashes ($ _ POST [ ‘khóa_tìm_kiếm’]);
$ sql = “SELECT * FROM tintuc WHERE (LOWER (tiêu đề) LIKE ‘% $ key%’ OR LOWER (noidung) LIKE ‘% $ key%’)”;
$ KQ = mysql_query ($ sql);
if (mysql_num_rows ($ KQ) <> 0) {
>?
<div class = “bảng khối”>
<style h2 = “text-transform: chữ hoa”> <a href=””> Kết quả tìm kiếm </a> </ h2>

thẻ <div class = “content”>
<? php
while ($ row = mysql_fetch_object ($ KQ)) {
?>

Nội dung cần hiển thị
<?php
}
?>
</div>
</div>
<?php
}
}
?>

Cách 2 nếu dùng theo cách 1 không được

<? php
if (isset ($ _ REQUEST [ ‘timkiem’])) {

// 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 tbl_sanpham where tbl_sanpham.tensp like ‘%$search%'”;

// 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 “<h3>$num ket qua tra ve voi tu khoa <b>$search</b></h3>”;
// 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[‘id’];
$ten = $row[‘tensp’];
$anh = $row[‘anh’];

echo “<ul>”;
echo “<li> <img src = ‘img /”.$ anh.”‘> </ li> “;
echo “<li>” $ 10 “</ li>”..;
echo “<li>
<span class = ‘xemchitiet’> <a href=’# ‘> Xem thêm </a> </ span>
</ li>”;

echo “</ ul>”;

}
} else {
echo “Khong tim thay ket qua!”;
}
}
}
?>

  • Bạn có thể xem thêm các khóa học ở dưới:

    Tag: học thiết kế đồ họa tại hà nội, học thiết kế đồ họa ở hà nội, học thiết kế đồ họa ở đâu, học thiết kế đồ họa ngắn hạn, khóa học thiết kế đồ họa ở hà nội, khóa học thiết kế đồ họa tại hà nội, học thiết kế đồ họa in ấn quảng cáo tại hà nội, khóa học thiết kế đồ họa in ấn quảng cáo tại hà nội, học lập trình web ở đâu, học lập trình web tại hà nội, học lập trình php ở đâu, học lập trình php tại hà nội

    • Học thiết kế đồ họa ngắn hạn
    • Học lập trình php ở đâu
    • Học html css tại hà nội
    • Học photoshop tại hà nội

    Mọi thông tin bạn có thể liên hệ:

    Đào tạo lập trình và thiết kế đồ họa

    Hotline: 0968.853.958 hoặc hỗ trợ kỹ thuật Mr. trung: 0947.499.221

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. Tất cả kiến thức tôi vừa nêu ra nếu bạn nào chưa nắm vững có thể vào serie php căn bản để xem nhé.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Xây dựng Cơ sở dữ liệu để tìm kiếm

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.

/*
SQLyog Ultimate - MySQL GUI v8.21 
MySQL - 5.5.20 : Database - basic
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@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','','House USA'),(2,'thehaftheart','456','','House USA'),(3,'superkaito','456','','House Viet Nam'),(4,'kaitosolo','1789','[email protected]ô.com','abc/fdc'),(5,'van canh','798','','Bien hoa'),(6,'yongc','789','','Bien Hoa'),(7,'haftheart789','789','','Ha tinh'),(8,'yongc456','56465','','Bien Hoa 2'),(9,'van canh456','564564','','Bien Hoa 3'),(10,'kaitocode','87897','','TPHCM');

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40111 SET [email protected]_SQL_NOTES */;

Bài viết này được đăng tại [free tuts .net]

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.
<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>
        <?php
        
        // Phần code PHP xử lý tìm kiếm
        
        ?>
    </body>
</html>

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 {
        // 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.

4. Xử lý tìm kiếm với lệnh Like trong MySql

Mình sẽ đưa ra full code luôn nhé vì trong code mình có giải thích rất kỹ rồi.

<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>
        <?php
        // Nếu người dùng submit form thì thực hiện
        if (isset($_REQUEST['ok'])) 
        {
            // Gán hàm addslashes để chống sql injection
            $search = addslashes($_GET['search']);

            // 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 
            {
                // 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", "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 có kết quả thì hiển thị, ngược lại thì thông báo không tìm thấy kết quả
                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.
                    echo '<table border="1" cellspacing="0" cellpadding="10">';
                    while ($row = mysql_fetch_assoc($sql)) {
                        echo '<tr>';
                            echo "<td>{$row['user_id']}</td>";
                            echo "<td>{$row['username']}</td>";
                            echo "<td>{$row['password']}</td>";
                            echo "<td>{$row['email']}</td>";
                            echo "<td>{$row['address']}</td>";
                        echo '</tr>';
                    }
                    echo '</table>';
                } 
                else {
                    echo "Khong tim thay ket qua!";
                }
            }
        }
        ?>   
    </body>
</html>

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 ^^.