10/10/2018, 13:21
Xin hướng dẫn làm tìm kiếm nâng cao cho trang web
Mình đang làm phần tìm kiếm nâng cao cho trang tin tức với các tùy chọn như sau
Phạm vi: Title - Description - Content (<input checkbox>)
Chuyên mục: Category (<option>)
Tìm từ ngày đến ngày (<date picker>)
Các tùy chọn trên đều có liên kết với nhau hết.
Hiện tại mình dùng if, else và viết query cho tìm được tới phần Category rồi nhưng phát sinh quá nhiều query (vì mình làm theo kiểu cơ bản, code mình còn khá yếu) nếu làm thêm cái Tìm từ ngày đến ngày nữa thì không biết làm xong có tổng cộng bao nhiêu cái query. hic hic, phát nản với cái này luôn.
Mong các cao thủ góp ý, hướng dẫn giúp mình cách làm đơn giản mà hiệu quả nhất để tối ưu cái tìm kiếm này vì làm theo cách của mình thì khi mà có mấy ngàn bài viết thì chắc đợi dài cổ. Mấy cái tùy chọn nó liên kết với nhau hết nên rắc rối. Hic hic.
Mình cảm ơn các bạn rất nhiều.
Phạm vi: Title - Description - Content (<input checkbox>)
Chuyên mục: Category (<option>)
Tìm từ ngày đến ngày (<date picker>)
Các tùy chọn trên đều có liên kết với nhau hết.
Hiện tại mình dùng if, else và viết query cho tìm được tới phần Category rồi nhưng phát sinh quá nhiều query (vì mình làm theo kiểu cơ bản, code mình còn khá yếu) nếu làm thêm cái Tìm từ ngày đến ngày nữa thì không biết làm xong có tổng cộng bao nhiêu cái query. hic hic, phát nản với cái này luôn.
Mong các cao thủ góp ý, hướng dẫn giúp mình cách làm đơn giản mà hiệu quả nhất để tối ưu cái tìm kiếm này vì làm theo cách của mình thì khi mà có mấy ngàn bài viết thì chắc đợi dài cổ. Mấy cái tùy chọn nó liên kết với nhau hết nên rắc rối. Hic hic.
Mình cảm ơn các bạn rất nhiều.
Bài liên quan
Code của mình là
$search= $_POST['search'];
$title = $_POST['title'];
những cái khác cũng như thế
rồi sau đó
if($title)
$query = Selec * FROM Article WHERE title LIKE '%$search%'
Cứ thế cứ lặp đi lặp lại với các điều kiện giống như trên
Tổng cộng có tới 20 cái query.
mấy ngàn bài viết thì dùng search engine như sphinx nhé
Mình muốn phát triển theo hướng tự viết chứ không dùng opensource bạn ạ, Với lại theo mình tìm hiểu thì còn phải cài đặt Appserver cho nó gì nữa...
Vì mình là thành viên mới nên khung soạn thảo hạn chế nhiều quá mình không đưa chi tiết code của mình được. Mong các bạn thông cảm
Sau đấy bạn làm một biến $WHERE
Kiểm tra xem nếu ô textbox trong form tìm kiếm nâng cao nào có dữ liệu thì thêm vào biến $WHERE đấy
Chuyên mục: Category (<option>)
Tìm từ ngày đến ngày (<date picker>)
Tương tự cho các mục còn lại.
- $title, $description... là các field hoặc option từ POST search. Nếu nó có thì cho vào query nếu không thì bỏ qua.
- ở $description bạn thấy có "$where ?", đây là hàm if rút gọn. Để xét xem $where đã được set chưa. Nếu có rồi thì thêm AND để đúng query, còn chưa thì thôi.
Như vậy cuối cùng chỉ có 1 query thôi. Bạn không chịu đưa code lên đây nên ko hiểu tại sao lại cần tới 20 query.
còn 20 câu query chắc là do bạn ấy nghĩ giống mình lúc đầu, chia trường hợp cho việc ng` ta có chọn các option ko =)), vd có 3 option thôi thì có 2^3 là 8 trường hợp ^^