Mẫu tìm kiếm cơ sở dữ liệu php mysql

Có một công cụ tìm kiếm cho trang web của bạn là điều khá quan trọng đối với web ngày nay. Nếu người dùng của bạn không thể tìm kiếm nội dung trên trang web của bạn, thì rất khó để khiến họ xem thêm những gì bạn cung cấp. May mắn thay, thật dễ dàng và nhanh chóng để tạo một công cụ tìm kiếm đơn giản với cơ sở dữ liệu PHP, HTML và MySQL. Tất cả đều có video hướng dẫn đi kèm. Ngoài ra, bản tải xuống mã nguồn mở miễn phí cũng có sẵn tại đây

Video Hướng dẫn Công cụ Tìm kiếm Đơn giản

Video hướng dẫn này về cách tạo một công cụ tìm kiếm đơn giản trong PHP có hai phần

  • Phần 1. https. //youtube. be/B-ywDE8tBeQ (cách tạo một công cụ tìm kiếm đơn giản)
  • Phần 2. https. //youtube. be/BV3hHeGrxd8 (cách thêm các mục mới vào cơ sở dữ liệu của công cụ tìm kiếm)

Hướng dẫn php này có bản tải xuống mã nguồn mở MIỄN PHÍ.
Tải mã nguồn xuống

Phong cách cho Công cụ Tìm kiếm (với CSS)

Để đơn giản, tôi sẽ không tập trung vào cách tạo một màn hình ưa thích cho công cụ tìm kiếm. Tôi sẽ sử dụng một biểu định kiểu CSS được tạo sẵn mà tôi đã sẵn sàng sử dụng, có tên là chính. css. Vì vậy, theo cách này, chúng ta có thể tìm hiểu sâu về mã PHP.
(Biểu định kiểu sẽ được bao gồm trong phần tải xuống mã nguồn ở trên).

Tạo Biểu mẫu Công cụ Tìm kiếm

Mã quan trọng cần lưu ý từ biểu mẫu là tất cả trong thuộc tính biểu mẫu và thuộc tính hộp văn bản

  • hành động =”. /mục lục. php” – hành động của biểu mẫu là đích đến cuối cùng. Đây sẽ là vị trí của tập lệnh sẽ thực hiện tất cả việc xử lý mã. Đối với công cụ tìm kiếm của chúng tôi, chỉ mục. php sẽ là tệp duy nhất chúng tôi đang làm việc với. Và do đó, chúng tôi sẽ làm cho tập lệnh gửi yêu cầu url trở lại chính nó
  • method=”GET” – loại phương thức GET là thứ sẽ lấy văn bản được nhập vào hộp văn bản và ném nó vào url cho người dùng. Giống như khi bạn thấy “tìm kiếm. php?k=php+tutorial” (với dấu cộng là phần giữ chỗ cho khoảng trắng). Đó là yêu cầu GET được chuyển vào URL
  • input type=”text” – kiểu “text” chỉ đơn giản là làm điều đó, biến đầu vào thành kiểu nhập văn bản (tôi biết là điên rồi)
  • name=”k” – “tên” có thể là bất cứ thứ gì bạn muốn. Hãy nhớ rằng nó sẽ hiển thị trong trình duyệt của người dùng, giống như ví dụ trên. Vì vậy, thường url ngắn hơn là tốt hơn
  • value=”” – có giá trị là “” (trống) sẽ làm cho hộp văn bản luôn trống khi người dùng nhìn thấy lần đầu. Nó không thực sự cần thiết, nhưng nó giúp mọi thứ sạch sẽ hơn một chút

Hãy xem cái này.   Cách di chuyển trang web của bạn từ máy chủ này sang máy chủ khác

Với biểu định kiểu của chúng tôi và phần còn lại của biểu mẫu đã được thiết lập, chúng tôi thấy biểu mẫu tìm kiếm cơ bản của mình được hiển thị bên dưới. Khá hấp dẫn nhỉ?

Mẫu tìm kiếm cơ sở dữ liệu php mysql
Mẫu tìm kiếm cơ sở dữ liệu php mysql

Tạo cấu trúc cơ sở dữ liệu công cụ tìm kiếm (sử dụng MySQL/phpMyAdmin)

Tiếp theo, chúng tôi sẽ thiết lập cấu trúc cơ sở dữ liệu SQL phía sau cho công cụ tìm kiếm. Vì công cụ tìm kiếm của chúng tôi đơn giản nên cơ sở dữ liệu MySQL của chúng tôi cũng sẽ đơn giản. Chỉ cần một vài trường để lưu trữ dữ liệu của chúng tôi. Để tạo cơ sở dữ liệu và bảng, tôi thích sử dụng phpMyAdmin để quản lý phụ trợ cơ sở dữ liệu MySQL

Các trường cơ sở dữ liệu chúng ta sẽ cần

Sau đây là danh sách các trường cơ sở dữ liệu MySQL mà chúng tôi sẽ cần cho công cụ tìm kiếm của mình

  • một trường id duy nhất để dễ dàng truy cập thông tin trong cơ sở dữ liệu
  • tiêu đề của trang web mà người dùng có thể tìm kiếm
  • url mà nó sẽ hướng họ đến
  • một lời giới thiệu hoặc mô tả nhỏ hay về những gì trang web làm
  • và các từ khóa có thể được sử dụng để tìm kiếm các bản ghi riêng lẻ

Điều quan trọng cần lưu ý là trường id phải được đặt thành tự động tăng và khóa chính. Làm điều này cho phép chúng tôi có một mã định danh duy nhất tăng dần tự động cho mỗi bản ghi trong cơ sở dữ liệu. Nó cũng cho phép các truy vấn chúng tôi chạy đối với cơ sở dữ liệu nhanh hơn nhiều

Mẫu tìm kiếm cơ sở dữ liệu php mysql
Mẫu tìm kiếm cơ sở dữ liệu php mysql

Giờ thì giao diện người dùng và cơ sở dữ liệu đã sẵn sàng, chúng ta có thể chuyển sang phần thú vị của tập lệnh công cụ tìm kiếm thực tế. Mã để vận hành công cụ tìm kiếm sẽ có một vài phần. Trước tiên, chúng tôi cần lấy các từ khóa mà người dùng đã tìm kiếm và định dạng chúng để chúng tôi sử dụng. Sau đó, chúng ta có thể kết nối với cơ sở dữ liệu và chạy truy vấn. Và cuối cùng, chúng tôi có thể hiển thị lại kết quả tìm kiếm cho người dùng

Nhận từ khóa công cụ tìm kiếm

// get the search terms from the url
$k = isset($_GET['k']) ? $_GET['k'] : '';

// create the base variables for building the search query
$search_string = "SELECT * FROM search_engine WHERE ";
$display_words = "";
					
// format each of search keywords into the db query to be run
$keywords = explode(' ', $k);			
foreach ($keywords as $word){
	$search_string .= "keywords LIKE '%".$word."%' OR ";
	$display_words .= $word.' ';
}
$search_string = substr($search_string, 0, strlen($search_string)-4);
$display_words = substr($display_words, 0, strlen($display_words)-1);

Chúng tôi bắt đầu bằng cách tạo một số biến mà chúng tôi sẽ dựa vào cho tập lệnh

Bắt đầu xây dựng truy vấn tìm kiếm

$k… – sử dụng câu lệnh boolean lồng nhau, chúng tôi có thể đảm bảo rằng url đang cung cấp cho chúng tôi các từ khóa tìm kiếm để sử dụng. Nhận đầu vào từ người dùng bằng phương pháp này giúp không gửi lại lỗi cho các biến không xác định cho người dùng

$search_string… – chúng tôi đặt cơ sở của truy vấn để chạy đối với cơ sở dữ liệu

Hãy xem cái này.   Cách cài đặt WordPress trên Localhost bằng XAMPP

$display_words… – chỉ cần tạo một chuỗi rỗng để sử dụng sau này. Cụ thể để hiển thị phiên bản được định dạng của những gì người dùng đã tìm kiếm lại cho họ

Thêm từng từ khóa vào chuỗi tìm kiếm

$keywords… – sử dụng hàm phát nổ, chúng ta có thể lấy một chuỗi bình thường và biến nó thành một mảng có cùng dữ liệu. Sử dụng một mảng làm cho các tác vụ như tìm kiếm từng câu một trở nên rất dễ dàng. Tham số đầu tiên là chuỗi mà bạn muốn ngắt tại. Trong trường hợp của chúng tôi, chúng tôi đang tách tất cả các từ khóa thành các từ riêng lẻ. Tham số tiếp theo là câu bạn muốn chia nhỏ (e. g. biến $k)

foreach… – bằng cách sử dụng câu lệnh foreach, chúng tôi có thể nhanh chóng phân tích cú pháp từng mục ra khỏi mảng $keywords một cách dễ dàng và không cần thêm thông tin nhảm nhí nào. Chúng tôi có thể tách từng phần tử mảng thành một phần tử riêng biệt. Sau đó lưu trữ nó trong một biến có thể được xử lý theo cách đệ quy

$search_string… – chúng tôi đang lấy từng $word từ $keywords. Sau đó, định dạng chúng thành chuỗi truy vấn của chúng tôi mà sau này chúng tôi có thể tìm kiếm cơ sở dữ liệu. Sau đó, sử dụng lệnh truy vấn LIKE, chúng ta có thể tìm kiếm các chuỗi trong trường cơ sở dữ liệu của từ khóa. Và bằng cách sử dụng % (dấu phần trăm) ở bên trong dấu ngoặc kép, truy vấn sẽ tìm kiếm từ $ của chúng tôi ở bất kỳ vị trí nào trong cơ sở dữ liệu. Đây là điều kỳ diệu thực sự của công cụ tìm kiếm ngay tại đây

Hai dòng cuối cùng chỉ để xóa các ký tự thừa khỏi biến $search_string và $display_words. Điều này giúp định dạng đúng chúng cho truy vấn và hiển thị lại cho người dùng

Hãy xem truy vấn MySQL trông giống như

Nếu chúng tôi lặp lại truy vấn mới tạo của mình sau khi tìm kiếm thứ gì đó chẳng hạn như “nickfrosty”, chúng tôi sẽ thấy nội dung như thế này

SELECT * FROM search_engine WHERE keywords LIKE '%nickfrosty%' 

Kết nối với cơ sở dữ liệu MySQL và xử lý truy vấn

// connect to the database
$conn = mysqli_connect("localhost", "root", "password", "tutorials");

// run the query in the db and search through each of the records returned
$query = mysqli_query($conn, $search_string);
$result_count = mysqli_num_rows($query);

// display a message to the user to display the keywords
echo '
'.number_format($result_count).' results found
'; echo 'Your search for "'.$display_words.'"
';

Bây giờ chúng tôi đã xây dựng truy vấn của mình, chúng tôi cần kết nối với máy chủ SQL và chọn cơ sở dữ liệu. Chúng tôi sẽ tiếp tục và chạy chuỗi truy vấn đối với cơ sở dữ liệu. Chúng tôi cũng nhận được số hàng được trả về từ việc làm như vậy

Nếu bạn muốn tìm hiểu thêm về một số lệnh php và MySQL và cách chúng hoạt động, hãy xem hướng dẫn của tôi tại đây. Nó bao gồm tất cả những kiến ​​thức cơ bản về hoạt động của PHP và MySQL/MySQLi

Hiển thị Kết quả của Công cụ Tìm kiếm cho Người dùng

Bây giờ chúng tôi có tất cả các kết quả cơ sở dữ liệu của mình, chúng tôi có thể bắt đầu hiển thị các kết quả đó cho người dùng. Để dễ dàng cho html, chúng tôi sẽ chỉ hiển thị chúng ở định dạng bảng đơn giản

// check if the search query returned any results
if ($result_count > 0){

	// display the header for the display table
	echo '';
	
	// loop though each of the results from the database and display them to the user
	while ($row = mysqli_fetch_assoc($query)){
		echo '';
	}
	
	// end the display of the table
	echo '';
}
else
	echo 'There were no results for your search. Try searching for something else.';

Trước tiên hãy kiểm tra để đảm bảo rằng có một số kết quả được trả về từ cơ sở dữ liệu và hiển thị kết quả tương ứng

Hãy xem cái này.   Tạo các trang lỗi tùy chỉnh cho trang web của bạn (sử dụng htaccess)

Sử dụng vòng lặp while, bạn có thể phân tích từng kết quả được trả về từ truy vấn tìm kiếm mà chúng tôi đã thực hiện trước đó. Biến $row lưu trữ từng bản ghi riêng lẻ trên mỗi lần đi qua vòng lặp. Các kết quả này được lưu trữ dưới dạng một mảng kết hợp mà chúng ta có thể xử lý hoặc hiển thị. Về cơ bản, điều này có nghĩa là chúng tôi sẽ có thể xử lý/định dạng/hiển thị từng kết quả được trả về trên cơ sở từng cái một. Mỗi cái được lưu trữ trong cùng một biến $row

Nếu bạn muốn tìm hiểu thêm về cách thức hoạt động của hàm mysqli_fetch_assoc, bạn có thể xem bài viết của tôi về những điều cơ bản về MySQL

Sau đó, chúng ta có thể xem xét từng trường của bản ghi cơ sở dữ liệu bằng cách truy xuất chúng từ mảng kết hợp. Để đơn giản, tôi sẽ hiển thị từng kết quả trong một bảng gọn gàng. Sau đó, hãy để biểu định kiểu của tôi làm cho chúng dễ nhìn hơn một chút

Đặt tất cả lại với nhau và bạn nhận được gì?

Bây giờ chúng tôi có một công cụ tìm kiếm đang hoạt động. Dưới đây là những gì sẽ được hiển thị nếu bạn tìm kiếm “php”. Chỉ hiển thị thành công các kết quả bao gồm cụm từ tìm kiếm, giống như bất kỳ công cụ tìm kiếm tốt nào

Mẫu tìm kiếm cơ sở dữ liệu php mysql
Mẫu tìm kiếm cơ sở dữ liệu php mysql

Bạn có thích nó không?

  • Nhấp để chia sẻ trên Twitter (Mở trong cửa sổ mới)
  • Bấm để chia sẻ trên Facebook (Opens in new window)
  • Nhấp để chia sẻ trên LinkedIn (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Reddit (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Tumblr (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Pinterest (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên WhatsApp (Mở trong cửa sổ mới)
  • Nhấp để gửi email này cho bạn bè (Mở trong cửa sổ mới)

Như thế này

Thích Đang tải.

Hướng dẫn và bài viết liên quan

công cụ tìm kiếm php

Sửa đổi lần cuối. Ngày 24 tháng 10 năm 2022

Mẫu tìm kiếm cơ sở dữ liệu php mysql
Câu chuyện trước.
Cách di chuyển trang web của bạn từ máy chủ này sang máy chủ khác

Mẫu tìm kiếm cơ sở dữ liệu php mysql
Câu chuyện tiếp theo.
Cách cài đặt WordPress trên Localhost bằng XAMPP

Giới thiệu về Tác giả / Nick

Mẫu tìm kiếm cơ sở dữ liệu php mysql

Luôn yêu thích việc giảng dạy và giúp đỡ người khác, Nick đã tạo ra HeyTuts vào năm 2015. Bắt đầu sự nghiệp trên YouTube của mình bằng cách tạo các hướng dẫn lập trình dành cho nhà phát triển web, HeyTuts đã mở rộng sang nhiều danh mục liên quan đến công nghệ khác

37 trả lời cho “Tạo một công cụ tìm kiếm đơn giản với PHP (tải xuống mã nguồn mở)”

  1. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Mrinmoy nói.

    Tháng Chín 22, 2018 lúc 1. 42 giờ sáng

    Này Nick, cảm ơn vì hướng dẫn tuyệt vời này. Nhưng liên kết tải xuống tệp dự án không hoạt động. Bạn có thể vui lòng cung cấp một liên kết thích hợp để tải xuống tệp dự án

    Đang tải

    Đáp lại

    • Mẫu tìm kiếm cơ sở dữ liệu php mysql
      Nick nói.

      Tháng Chín 22, 2018 lúc 3. 34 giờ chiều

      Cảm ơn cho những người đứng đầu lên. Tôi vừa sửa liên kết trong bài viết. Mã nguồn có sẵn ở đây. https. //www. heytuts. com/download/simple-search-engine-source-code/

      Đang tải

      Đáp lại

      • Mẫu tìm kiếm cơ sở dữ liệu php mysql
        Đấng vĩ đại nói.

        Tháng Bảy 1, 2019 tại 3. 47 giờ sáng

        Cảm ơn nick rất nhiều. Bạn thật tuyệt vời

        Đang tải

        Đáp lại

        • Nick nói.

          Tháng Tám 10, 2019 lúc 7. 01 giờ chiều

          Cảm ơn những lời tốt đẹp

          Đang tải

          Đáp lại

  2. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    abhishek nói.

    2 tháng 12, 2019 lúc 10. 20 giờ sáng

    tại sao tôi gặp lỗi ở dòng số 70, chỉ mục. tập tin php

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Hai 28, 2020 tại 7. 14 giờ chiều

      Không chắc. Gửi cho tôi một bản sao của tệp mà bạn đang gặp sự cố và tôi có thể xem qua nó 🙂

      Đang tải

      Đáp lại

  3. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    nói.

    Tháng Một 14, 2020 tại 9. 52 giờ sáng

    Xin chào Nick, tôi muốn hỏi tại sao mã nguồn rất khác với video youtube của bạn về cách tạo công cụ tìm kiếm. Chúng tôi hiện đang cố gắng theo dõi video youtube của bạn và sử dụng mã nguồn bạn cung cấp. Chúng tôi liên tục gặp lỗi và mong được hướng dẫn thêm về mã nguồn hoặc video youtube gốc mà bạn đã thực hiện

    Đang tải

    Đáp lại

    • Mẫu tìm kiếm cơ sở dữ liệu php mysql
      Nova Andre Saputra nói.

      Tháng Hai 28, 2020 tại 6. 53 giờ chiều

      Tôi nghĩ, mã không khác nhau 😕 có thể bạn có thể kiểm tra lại chúng

      Đang tải

      Đáp lại

      • Nick nói.

        4 Tháng Năm, 2020 tại 6. 31 giờ sáng

        Mã được sử dụng là khác nhau. Tôi đang trong quá trình cập nhật bài viết, video và tải xuống mã nguồn. Bây giờ tất cả đều giống nhau 🙂

        Đang tải

        Đáp lại

    • Nick nói.

      Tháng Hai 28, 2020 tại 7. 13 giờ chiều

      Nó phụ thuộc vào video bạn đang xem trên YouTube. Mã nguồn và bài viết này dành cho hướng dẫn Công cụ tìm kiếm được cập nhật mà tôi đã tạo vào tháng 1 năm 2020. Hãy chắc chắn rằng bạn đang xem các video được cập nhật

      Đang tải

      Đáp lại

  4. Pingback WordPress và mọi thứ bạn nên biết - HeyTuts nói.

    Tháng 2 17, 2020 tại 10. 27 giờ chiều

    […] https. //www. heytuts. com/web-dev/php/simple-search-engine-in-php […]

    Đang tải

    Đáp lại

  5. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Samer Houri nói.

    11 Tháng Tư, 2020 tại 7. 40 giờ chiều

    với tư cách là Mrinmoy
    Xin chào Nick, cảm ơn vì hướng dẫn tuyệt vời này. Nhưng liên kết tải xuống tệp dự án không hoạt động. Bạn có thể vui lòng cung cấp một liên kết thích hợp để tải xuống tệp dự án. Tương tự

    Đang tải

    Đáp lại

    • Nick nói.

      1 Tháng Năm, 2020 tại 8. 14 giờ chiều

      Tôi đã kiểm tra lại liên kết trên máy tính của mình và không gặp vấn đề gì với nó. Điều gì xảy ra khi bạn nhấp vào nó?

      Đang tải

      Đáp lại

  6. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Quốc vương Rustamov nói.

    28 Tháng Năm, 2020 tại 2. 44 giờ chiều

    Xin chào Nick, cảm ơn vì đã hướng dẫn nhưng tôi không thấy liên kết tải xuống mã nguồn, vui lòng để lại tại đây

    Đang tải

    Đáp lại

    • Nick nói.

      28 Tháng Năm, 2020 tại 3. 52 giờ chiều

      của bạn đây. Tôi sẽ xem xét để đảm bảo rằng các liên kết đang tải đúng cách trên các trang của bài viết. https. //www. heytuts. com/download/simple-search-engine-source-code/

      Đang tải

      Đáp lại

  7. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Josiah Boziah nói.

    Tháng Sáu 27, 2020 tại 6. 14 giờ chiều

    Cảm ơn bạn hướng dẫn tuyệt vời. Mình đang làm website âm nhạc, mình muốn tạo search để tìm kiếm tất cả các trang người dùng chỉ cần gõ tên ca sĩ hoặc tên bài hát vào tìm kiếm là nó sẽ trả về tất cả các bài hát liên quan đến nghệ sĩ đó hoặc bài hát cụ thể mà người dùng yêu cầu . Làm cách nào tôi có thể thêm chức năng đó vào hướng dẫn tìm kiếm của bạn?

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Bảy 6, 2020 tại 8. 17 giờ chiều

      Điều đó khá dễ dàng để điều chỉnh công cụ tìm kiếm đơn giản này.
      Đầu tiên, tôi sẽ tạo một bảng mới cho nghệ sĩ. Cung cấp cho nó một số trường như ID nghệ sĩ và tên nghệ sĩ. Sau đó, tạo một bảng khác cho các album, cung cấp cho nó các trường như ID nghệ sĩ, tên album, bìa album, ngày phát hành và bất kỳ thông tin nào khác mà bạn muốn hiển thị.
      Tiếp theo, tạo một bảng có tên bài hát với các trường như ID album, tên bài hát, v.v.

      Lưu ý cách mỗi bảng có trường ID cho phần cao hơn tiếp theo của phân cấp âm nhạc. Bài hát có ID album. Album có ID nghệ sĩ. Đó là cách bạn liên kết tất cả thông tin lại với nhau trong cơ sở dữ liệu.
      Sau đó, trong chuỗi truy vấn tìm kiếm, bạn có thể tìm tên bài hát. Kết quả bài hát sẽ cung cấp cho bạn ID album, bạn có thể sử dụng ID này để nhận tất cả các bài hát khác từ album hoặc nghệ sĩ đó.

      Có ý nghĩa?

      Đang tải

      Đáp lại

  8. Josiah Boziah nói.

    Tháng Bảy 8, 2020 tại 3. 31 giờ sáng

    Tôi đã nhận được phản hồi của bạn qua email, tôi không thấy nhận xét của mình ở đây. Nhưng nó liên quan đến việc người dùng tìm kiếm tất cả các trang trên trang web của tôi cho bài hát của tôi, câu hỏi đặt ra là tôi có cần nhập tất cả nghệ sĩ & bài hát vào Cơ sở dữ liệu không?

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Bảy 8, 2020 tại 5. 14 giờ sáng

      Thật kỳ lạ, bình luận vẫn được liệt kê. Kỳ dị. Dù sao….
      Có, bạn sẽ phải nhập tất cả thông tin về nghệ sĩ và bài hát vào cơ sở dữ liệu. Trừ khi bạn có thể tìm thấy một số cơ sở dữ liệu mà bạn có thể tải xuống đã có cơ sở dữ liệu bạn muốn

      Đang tải

      Đáp lại

  9. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Joe Cardamone nói.

    Tháng Bảy 8, 2020 tại 6. 36 giờ chiều

    Xin chào Nick, cảm ơn vì hướng dẫn tuyệt vời. Tất cả đã diễn ra tốt đẹp với mã hóa và tải xuống.
    Xin hỏi một câu, tôi đã thêm một trường vào bảng của mình có tên là “sắp xếp” vì tôi muốn sắp xếp kết quả dựa trên loại kết quả (ví dụ: trang html v’s pdf).
    Làm cách nào tôi có thể giới thiệu một cách sắp xếp trong mã? .
    Cảm ơn,
    Joe

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Bảy 8, 2020 tại 7. 49 giờ tối

      Chào joe. Câu hỏi hay. Bạn chỉ đang cố sắp xếp thông tin trên trang đang được hiển thị cho người dùng phải không? . Sau đó, trong mã php nơi bạn tự tạo truy vấn tìm kiếm (biến $search_string), hãy thêm lệnh SQL của bạn để thực hiện kiểu sắp xếp mong muốn, sử dụng câu lệnh if. Vì vậy, đối với ví dụ về tệp pdf, tôi sẽ viết một cái gì đó như thế này

      if ($_GET['sort'] == 'pdf')
      $search_string .= ' AND url LIKE '%.pdf' ';
      // the % sign at the beginning means the url must end with ".pdf" but can have any other text at the beginning

      Mặt khác, để điều này hoạt động, bạn sẽ phải bọc toàn bộ phần từ khóa của chuỗi tìm kiếm truy vấn trong ngoặc đơn. Đó là bởi vì SQL sẽ tuân theo thứ tự các phép toán, giống như toán học

      Vì vậy, khi tất cả đã được nói và làm xong, truy vấn SQL của bạn sẽ giống như thế này (giả sử bạn tìm kiếm “tên người” bằng loại “PDF”).
      “CHỌN * TỪ search_engine WHERE (từ khóa THÍCH ‘%person%’ HOẶC từ khóa THÍCH ‘%name%’) VÀ url THÍCH ‘%. pdf’ “

      Đang tải

      Đáp lại

  10. Joe Cardamone nói.

    Tháng Bảy 8, 2020 tại 10. 27 giờ chiều

    Cảm ơn Nick đã trả lời nhanh. Tôi có thể dành thêm chút thời gian của bạn để giải thích thêm được không?

    Cơ sở dữ liệu của tôi là.
    id từ khóa url tiêu đề Sắp xếp
    1 một http. xin chào 3
    2 hai http. x xin chào 1
    3 ba http. xin chào 2
    4 bốn http. z tạm biệt 1

    Vì vậy, nếu chúng ta tìm kiếm với từ khóa “xin chào”, kết quả hiển thị là

    hai http. x xin chào 1
    ba Http. xin chào 2
    một http. xin chào 3

    Tôi không cần người dùng có thể sắp xếp các kết quả này, chỉ để hiển thị theo thứ tự tôi muốn

    Hy vọng bạn có thể hỗ trợ

    Cảm ơn

    Joe

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Bảy 9, 2020 tại 12. 02 giờ chiều

      Ahhh tôi hiểu ý bạn rồi. Điều đó thậm chí còn dễ dàng hơn những gì tôi nghĩ trước đây. Bạn có thể sử dụng lệnh SQL tích hợp “ORDER BY”.
      Ở cuối $search_string, bạn cần thêm lệnh “ORDER BY” và sau đó khai báo nếu bạn muốn sắp xếp thứ tự tăng dần (còn gọi là 1,2,3 bằng cách sử dụng “ASC”) hoặc giảm dần .

      Vì vậy, truy vấn SQL của bạn sẽ xuất hiện giống như thế này.
      “CHỌN * TỪ công cụ tìm kiếm WHERE (từ khóa THÍCH ‘%person%’ HOẶC từ khóa THÍCH ‘%name%’) ĐẶT HÀNG THEO Sắp xếp MÔ TẢ”

      Và đó là nó

      Đang tải

      Đáp lại

      • Joe Cardamone nói.

        Tháng Bảy 9, 2020 tại 7. 23 giờ đêm

        Cảm ơn Nick, rất tiếc là tôi không thể làm việc này.
        Mã của tôi giống như mã của bạn ở trên, có thêm () xung quanh các từ khóa và ĐẶT HÀNG THEO 'sắp xếp' ở cuối.

        // KIỂM TRA XEM CÁC TỪ KHÓA CÓ ĐƯỢC CUNG CẤP KHÔNG
        if (isset($_GET[‘k’]) && $_GET[‘k’]. = ”){
        // lưu từ khóa từ url
        $k = trim($_GET['k']);
        // create a base query and words string
        $query_string = “SELECT * FROM search_engine WHERE “;
        $display_words = “”;
        // seperate each of the keywords
        $keywords = explode(‘ ‘, $k);
        foreach($keywords as $word){
        $query_string .= ” (keywords LIKE ‘%”.$word.”%’) OR “;
        $display_words. = $từ. ” ĐẶT HÀNG THEO 'sắp xếp' “;
        }
        $query_string = substr($query_string, 0, strlen($query_string) – 3) ;

        tuy nhiên khi tôi lặp lại $query_string tôi nhận được

        Tìm kiếm

        CHỌN * TỪ công cụ tìm kiếm WHERE (từ khóa THÍCH '%bio%') HOẶC (từ khóa THÍCH '%sal%')
        Tìm thấy 182 kết quả
        Your search for bio ORDER BY ‘sort’ sal ORDER BY ‘sort’

        Bất kỳ trợ giúp đánh giá rất cao

        Đang tải

        Đáp lại

        • Nick nói.

          Tháng Bảy 9, 2020 tại 7. 37 giờ chiều

          Tôi nghĩ rằng tôi thấy vấn đề của bạn. Bạn đã thêm lệnh “ĐẶT HÀNG” vào biến $display_words. Không phải biến $query_string như bạn nên làm. Thử cái này

          $query_string = substr($query_string, 0, strlen($query_string) – 3);
          $query_string. = ” ĐẶT HÀNG BẰNG ‘sắp xếp’ DESC”;

          Và xóa nội dung “ORDER BY” khỏi biến $display_words bên trong câu lệnh if

          Đang tải

          Đáp lại

          • Joe Cardamone nói.

            Tháng Bảy 10, 2020 tại 12. 29 giờ sáng

            Cảm ơn Nick, tôi nghĩ giờ chúng ta đã thân nhau. Tôi có đoạn mã sau.
            $query_string = substr($query_string, 0, strlen($query_string) – 3);
            $query_string. = ” ORDER BY 'sort' DESC”;
            Tuy nhiên, ở dòng thứ hai, tôi gặp thông báo “Lỗi cú pháp, T_STRING không mong đợi”
            Bạn có ý kiến ​​gì không?

            Đang tải

  11. Joe Cardamone nói.

    Tháng Bảy 10, 2020 tại 12. 35 giờ sáng

    Nixk, đã thêm khoảng trắng sau =
    $query_string. = ” ĐẶT HÀNG BẰNG ‘sắp xếp’ DESC”;
    Tất cả đều ổn. Cảm ơn bạn đã giúp đỡ. Nhiều đánh giá cao.

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Bảy 10, 2020 tại 4. 06 giờ sáng

      vâng anh bạn. Tôi biết chúng tôi sẽ đạt được điều đó

      Đang tải

      Đáp lại

  12. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Godwin nói.

    Tháng Bảy 16, 2020 tại 4. 39 giờ tối

    Cảm ơn Nick

    Đang tải

    Đáp lại

  13. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Kayla nói.

    Tháng Mười Hai 12, 2020 tại 11. 50 giờ sáng

    Xin chào Nick,
    Cảm ơn bạn vì hướng dẫn tuyệt vời này và nó hoạt động rất tốt.
    Tôi sử dụng nó để tìm kiếm một số nội dung trong bảng tin tức của cơ sở dữ liệu của mình.
    Tôi muốn tìm kiếm cả tiêu đề không chỉ nội dung.
    Bây giờ tôi có cái này.
    $query_string = “CHỌN * TỪ tin tức WHERE “;
    $display_words = “”;

    // tách riêng từng từ khóa
    $content = phát nổ(' ', $k);
    foreach($content as $word) . = ” nội dung THÍCH ‘%”. $từ. ”%’ HOẶC “;
    $query_string .= ” content LIKE ‘%”.$word.”%’ OR “;
    $display_words. = $từ. ” “;
    }
    Trong bảng tin tức của tôi, tôi có , id, tiêu đề, nội dung và ngày tháng và tôi muốn công cụ tìm kiếm tìm kiếm từ trong tiêu đề . Bạn có thể vui lòng giúp tôi việc đó không?

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Mười Hai 13, 2020 tại 6. 34 giờ chiều

      Rất vui vì bạn thích hướng dẫn này. Bạn thực sự có thể làm điều đó siêu dễ dàng. Trong “$query_string của bạn. = …. ” bên trong vòng lặp foreach, bạn chỉ cần thêm trường cơ sở dữ liệu khác mà bạn muốn truy vấn tìm kiếm.
      $query_string. = ” nội dung THÍCH ‘%”. $từ. ”%’ HOẶC tiêu đề THÍCH ‘%”. $từ. ”%’ OR “;
      Điều đó sẽ giúp bạn hoàn thành công việc. Nếu bạn muốn cả 'nội dung' và 'tiêu đề' đều có từ bên trong (và chỉ trả về kết quả đó) thì bạn có thể bọc các cụm từ tìm kiếm bên trong dấu ngoặc đơn rồi thay đổi từ 'HOẶC' ở giữa thành ' .
      Thích cái này.
      $query_string. =” (nội dung THÍCH ‘%”. $từ. ”%’ VÀ tiêu đề THÍCH ‘%”. $từ. ”%’) OR “;
      Chú ý các vị trí cụ thể của dấu ngoặc đơn. Dấu ngoặc đơn đóng phải ở trước 'HOẶC' cuối cùng, nếu không thì truy vấn sẽ không tìm kiếm chính xác.
      Hy vọng điều này sẽ hữu ích 🙂

      Đang tải

      Đáp lại

      • Kayla nói.

        Tháng Mười Hai 14, 2020 tại 3. 19 giờ sáng

        Cảm ơn Nick
        bạn là tuyệt nhất.

        Đang tải

        Đáp lại

  14. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    MichelZeub nói.

    16 Tháng hai, 2021 tại 1. 11 giờ tối

    Xin chào, biểu mẫu để thêm các mục mới vào cơ sở dữ liệu của công cụ tìm kiếm không hoạt động

    Đang tải

    Đáp lại

    • Nick nói.

      Tháng Hai 16, 2021 tại 3. 08 giờ tối

      Bạn đã tự gõ nó hay bạn đang sử dụng mã tải xuống?

      Đang tải

      Đáp lại

  15. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    Schiano Francesco nói.

    21 Tháng Tư, 2021 tại 1. 33 giờ sáng

    Xin chúc mừng, hướng dẫn tuyệt vời, tôi đã tìm kiếm trên mạng trong nhiều ngày mà không tìm thấy công cụ nào không giết máy chủ và chạy vào giới hạn bộ nhớ, công cụ của bạn hoạt động rất tốt. Thật không may, tôi có hàng nghìn bản ghi và khi tìm kiếm tìm thấy hàng trăm kết quả, nó sẽ liệt kê tất cả chúng, làm cách nào để điều chỉnh phân trang 10 kết quả trên mỗi trang? . Cảm ơn bạn

    Đang tải

    Đáp lại

  16. Mẫu tìm kiếm cơ sở dữ liệu php mysql
    hanelyp nói.

    21 Tháng Tư, 2021 tại 3. 50 giờ sáng

    Một ví dụ tuyệt vời về cách KHÔNG lập trình công cụ tìm kiếm

    Bạn sử dụng mysqli. PDO mới hơn được ưa thích hơn nhiều. Nếu bạn phải sử dụng giao diện cũ hơn, ít nhất hãy thoát khỏi các tham số truy vấn một cách chính xác để ngăn chặn cuộc tấn công SQL injection

    $query_string. = ” nội dung THÍCH ‘%”. $từ. ”%’ OR “;
    Truy vấn được xây dựng ở trên sẽ yêu cầu quét bảng, hay còn gọi là CHẬM. Không có cách nào để lập chỉ mục mySQL (hoặc theo hiểu biết của tôi về bất kỳ cơ sở dữ liệu chung nào) để tránh điều đó. Nó sẽ hoạt động đối với một cơ sở dữ liệu nhỏ với tải nhẹ, nhưng sẽ nhanh chóng bị lỗi khi cơ sở dữ liệu phát triển.

    Đang tải

    Đáp lại

    • Nick nói.

      21 Tháng Tư, 2021 tại 5. 20 giờ sáng

      Bạn đang nói rất nhiều điều đúng sự thật ở đây

      Bài viết này ban đầu được viết khoảng 5 năm trước để trình bày ý tưởng cơ bản về việc tạo một công cụ tìm kiếm. Vì vậy, vâng, nó sử dụng MySQLi (ban đầu được viết bằng các hàm MySQL thậm chí còn cũ hơn. ) Tôi thực sự cần cập nhật nó cho pdo, chỉ là chưa có thời gian

      Như tôi đã nêu trong bài viết, điều này hoàn toàn không xử lý bảo mật và không nên được sử dụng trong hệ thống sản xuất

      Ngoài lệnh THÍCH tìm kiếm toàn bộ cơ sở dữ liệu, Đúng là bạn không thể lập chỉ mục trên lệnh THÍCH. Sử dụng tốt hơn sẽ bằng cách sử dụng MATCH