Hướng dẫn search engine in php without database - công cụ tìm kiếm trong php không có cơ sở dữ liệu

Tôi có một trang web thực sự nhỏ được viết trong PHP (khoảng 5 trang + mục blog). Tất cả các trang được đặt trong các tệp PHP ở phía máy chủ (không sử dụng cơ sở dữ liệu). Cho đến nay, tôi đã quản lý để tìm kiếm bên trong 'các mục blog' của mình - bởi vì đây chỉ là các văn bản đơn giản với đánh dấu HTML (Tôi tước các thẻ và thực hiện thao tác tìm kiếm):

$file_name=array();
$search_string="";
if(isSet($_GET["query"])){
    $search_string=$_GET["query"];
}
$search_result="";
$files="";
$phpfilename="";
$i=0;   
if (!$search_string){
    echo 'No query entered
'; }else{ if ($handle = opendir('content/')) { while (false !== ($file = readdir($handle))){ if(strrchr($file, '.') === ".txt"){ $filename[]= $file; } } closedir($handle); } foreach($filename as $value){ $files="content/$value"; $fp = strip_tags(file_get_contents($files)); if(stripos($fp, $search_string)) { $search_result.=preg_replace('/<[^>]*>[^<]*<[^>]*>/', '', substr($fp,0,255)); // append a preview to search results } if($search_result!=""){ echo $search_result; }else{ echo "No Results
"; } } }

Tất nhiên điều đó hoạt động chỉ vì các tập tin là văn bản đơn giản. Nhưng tôi cũng có các trang là các tệp 'PHP' thực sự và cũng muốn thực hiện thao tác tìm kiếm trên chúng. Nhưng tất nhiên tôi không muốn tìm kiếm bên trong 'mã PHP'. Tôi đã nhận ra rằng tôi sẽ cần các tệp đã chuẩn bị mà trình duyệt nhận được từ máy chủ web - Tôi đã nghĩ đến việc sử dụng file_get_contents() với các yêu cầu HTTP cho tất cả các trang của tôi (OK, 'chỉ' khoảng 5 trang nhưng vẫn vậy) ...

Tôi đã đọc ở đây để nó được coi là thực hành xấu để làm như vậy và cảm giác như tôi đang thực hiện sai cách tiếp cận.

Bất kỳ ý tưởng và đề xuất sẽ được đánh giá cao.

Chỉnh sửa: một ví dụ cho một trang thông thường mà tôi muốn có thể tìm kiếm

index.php





<?php echo $lang['WEBSITE_TITLE']; ?>









/include/category_1.php

'.$lang['NAVI_CAT_1'].''; ?>


Tệp ngôn ngữ


Có một công cụ tìm kiếm cho trang web của bạn là khá quan trọng đối với trang web ngày hôm nay. Nếu người dùng của bạn có thể tìm kiếm trang web của bạn để biết nội dung, thật khó để có được họ để xem thêm những gì bạn phải cung cấp. May mắn thay, nó rấ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ả với một hướng dẫn video bao gồm! Cộng với tải xuống nguồn mở miễn phí cũng có sẵn ở đây!

Video công cụ tìm kiếm đơn giản

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

  • Phần 1: https://youtu.be/b-ywde8tbeq (cách tạo công cụ tìm kiếm đơn giản)
  • Phần 2: https://youtu.be/bv3hhegrxd8 (cách thêm các mục mới vào cơ sở dữ liệu công cụ tìm kiếm)

Kiểu 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 bảng kiểu CSS được tạo sẵn mà tôi đã sẵn sàng để đi, được đặt tên là main.css. Vì vậy, bằng cách này, chúng ta có thể tham gia vào mã hóa của mã PHP. (Bảng kiểu sẽ được bao gồm trong tải xuống mã nguồn ở trên).
(The stylesheet will be included in the source code download above).

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 các thuộc tính biểu mẫu và các thuộc tính hộp văn bản:

  • hành động = trực tiếp ./ index.php - hành động của hình thức là đích đến mục tiêu cuối cùng. Đây sẽ là vị trí của tập lệnh sẽ thực hiện tất cả các mã crunching. Đối với công cụ tìm kiếm của chúng tôi, index.php sẽ là tệp duy nhất chúng tôi đang làm việc. Và do đó, chúng tôi sẽ thực hiện tập lệnh gửi yêu cầu URL trở lại.
  • Phương thức = Get Get - Loại phương thức GET là những gì sẽ đưa văn bản 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 nhìn thấy search search.php? Đó là một yêu cầu nhận được được thông qua trong URL.
  • loại đầu vào = văn bản trực tuyến & NBSP; - Loại văn bản trực tuyến chỉ đơn giản là sẽ làm điều đó, làm cho đầu vào trở thành đầu vào văn bản (điên rồ tôi biết).
  • Tên = Tiết Kiêu - Tên tên của người Viking có thể là bất cứ điều gì bạn muốn. Hãy nhớ rằng nó sẽ hiển thị trong trình duyệt người dùng, như ví dụ trên. Vì vậy, thường là URL ngắn hơn là tốt hơn.
  • value = phạm vi - có giá trị của trò chơi (trống) sẽ làm cho hộp văn bản luôn trống khi người dùng lần đầu tiên nhìn thấy nó. Nó không thực sự cần thiết, nhưng nó làm cho mọi thứ sạch sẽ hơn một chút.

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

Hướng dẫn search engine in php without database - công cụ tìm kiếm trong php không có cơ sở dữ liệu

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 back-end cho công cụ tìm kiếm. Vì công cụ tìm kiếm của chúng tôi rất đơn giả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 tôi sẽ cần

Sau đây là danh sách các trường cơ sở dữ liệu MySQL mà cuối cùng 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ệuid fields to easily access the information in the database
  • tiêu đề của trang web mà người dùng có thể tìm kiếmtitle of the site the user can search
  • Urlthat nó sẽ hướng họ đếnurlthat it will direct them to
  • Một mô tả Blurbor nhỏ đẹp về những gì trang web làmblurbor description about what the site does
  • và từ khóa có thể được sử dụng để tìm kiếm các bản ghi riêng lẻkeywordsthat can be used to search for individual records

Điều quan trọng cần lưu ý là trường ID phải được đặt thành khóa chính 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 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.id field must be set to auto incrementand primary key. Doing this allows for us to have an auto incrementing unique identifier for each record in the database. It also allows the queries we run against the database to be much faster.

Hướng dẫn search engine in php without database - công cụ tìm kiếm trong php không có cơ sở dữ liệu

Bây giờ khi mặt trước 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. Đầu tiên chúng ta cần có được các từ khóa mà người dùng đã tìm kiếm và định dạng chúng để sử dụng. Sau đó, chúng tôi 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 ta có thể hiển thị kết quả tìm kiếm trở lại cho người dùng.keywords that the user searched for and format them for our use. Then we can connect to the database and run the query. And lastly we can display the search results back to the user.

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 tập lệnh.

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

$ kv - Sử dụng câu lệnh Boolean lồng nhau, chúng tôi có thể đảm bảo URL 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 bỏ lại lỗi cho các biến không xác định cho người dùng. – using a nested boolean statement we can make sure the url is giving us search keywords to use. Getting input from the user using this method helps with not kicking back errors for undefined variables to the user.

$ Search_String, chúng tôi đặt cơ sở của truy vấn để chạy đối với cơ sở dữ liệu. – we set the base of the query to be run against the database.

$ display_words, - chỉ cần tạo một chuỗi trống để sử dụng sau. Cụ thể để hiển thị một 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ọ. – just create a empty string for use later. Specifically to display a formatted version of what the user searched for back to them.

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

$ từ khóa - Sử dụng chức năng bùng 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ủa cùng một dữ liệu. Sử dụng một mảng làm cho các tác vụ như tìm kiếm thông qua một từ từng từ rất dễ dàng. Tham số đầu tiên là chuỗi mà bạn muốn phá vỡ. 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ỏ (ví dụ: biến $ k).– using the explode function, we can take a normal string and turn it into an array of the same data. Using an array makes tasks like searching through a sentence word by word very easy. The first parameter is the string that you want to break at. In our case we are separating all the keywords into individual words. The next parameter is the sentence you want to break up (e.g. the $k variable).

ForEach,-Sử dụng câu lệnh foreach, chúng tôi có thể nhanh chóng phân tích từng mục ra khỏi mảng & nbsp; $ từ khóa dễ dàng và không có thêm mục đích. Chúng tôi có thể chia từng phần tử mảng thành một phần tử riêng. Sau đó lưu trữ nó trong một biến có thể được làm việc đệ quy. – using the foreach statement we can quickly parse each item out of the $keywords array with ease and no extra bull-crap. We are able to split each array element into a separate one. Then store it in a variable that can be worked recursively.

$ search_string, chúng tôi đang lấy từng từ $ từ & từ khóa $ nbsp; $. 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 cho. Sau đó, bằng cách sử dụng lệnh truy vấn giống như chúng ta có thể tìm kiếm các chuỗi trong trường cơ sở dữ liệu của chúng ta về các từ khóa. Và bằng cách sử dụng % (phần trăm dấu hiệu) ở bên trong các dấu ngoặc kép, truy vấn sẽ tìm kiếm $ từ của chúng tôi bất cứ nơi nào trong cơ sở dữ liệu. Đây là phép thuật thực sự của công cụ tìm kiếm ngay tại đây! – we are taking each $word from the $keywords. Then formatting them into our query string that we can later search the database for. Later, using the LIKE query command we can search for strings in our database field of keywords. And by using % (percent signs) on the inside of the quotation marks, the query will search for our $word any where in the database. This is the true magic of the search engine right here!

Hai dòng cuối cùng chỉ là để xóa các ký tự phụ khỏi & nbsp; $ search_string và & nbsp; $ display_words biến. Điều này giúp định dạng chúng đú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 được xây dựng của mình sau khi tìm kiếm một thứ gì đó như là Nick NickFrosty, chúng tôi sẽ thấy một cái gì đó 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 SQL Server 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ố lượng hàng được trả lại 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 ở đây. Nó bao gồm tất cả các điều cơ bản của các hoạt động PHP và MySQL/MySQLI.

Hiển thị kết quả 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 chúng tôi, chúng tôi có thể bắt đầu hiển thị những kết quả đó cho người dùng. Để dễ dàng của 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ả cho phù hợp.

Sử dụng một vòng lặp trong thời gian, bạn có thể phân tích từng kết quả được trả về từ truy vấn tìm kiếm của chúng tôi mà chúng tôi đã thực hiện trước đó. Biến hàng $ lưu trữ mỗi bản ghi riêng lẻ trên mỗi lần vượt qua của vòng lặp. Những 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 người một. Mỗi được lưu trữ trong cùng một biến hàng $.

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

Sau đó, chúng ta có thể xem xét từng trường của các bản ghi cơ sở dữ liệu bằng cách lấy 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 để bảng kiểu của tôi làm cho chúng dễ chịu hơn một chút để nhìn vào.

Đặ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 làm việc! Dưới đây là những gì sẽ hiển thị nếu bạn tìm kiếm Php Php. Chỉ hiển thị thành công các kết quả bao gồm thuật ngữ tìm kiếm, giống như bất kỳ công cụ tìm kiếm tốt nào!

Hướng dẫn search engine in php without database - công cụ tìm kiếm trong php không có cơ sở dữ liệu

Làm thế nào để xây dựng một công cụ tìm kiếm trong PHP?

Để tạo công cụ tìm kiếm, chỉ cần ba bước:-..
Tạo một tệp HTML và xác định đánh dấu và tập lệnh. Chúng tôi tạo một tệp HTML và lưu nó bằng một tìm kiếm tên.html. ....
Tạo một tệp PHP để tìm nạp và gửi kết quả từ cơ sở dữ liệu. Chúng tôi tạo một tệp PHP và lưu nó với tên get_results.php. ....
Tạo tệp CSS và xác định kiểu dáng ..

Công cụ tìm kiếm hoạt động như thế nào trong PHP?

Tạo biểu mẫu công cụ tìm kiếm trong HTML Action = Hồi search.php - hành động của biểu mẫu là đích đến mục tiêu cuối cùng. Đây sẽ là vị trí của tập lệnh PHP sẽ thực hiện tất cả các tìm kiếm. Phương thức = Get Get Get - Loại phương thức GET là những gì sẽ đưa văn bản nhập vào hộp văn bản và ném nó vào URL cho người dùng.action= “search. php” — the form's action is the end goal destination. This will be the location of the PHP script that is going to do all the searching. method=“get” — the GET method type is what will take the text entered into the text box and throw it into the url for the user.

Làm thế nào có thể kiểm tra dữ liệu từ cơ sở dữ liệu trong PHP?

phpsearch.php php $ search = $ _post ['search'];$ servername = "localhost";$ username = "Bob";$ password = "123456";$ dB = "classDB";$ Conn = new mysqli ($ servername, $ username, $ password, $ db);if ($ Conn-> Connect_error) {die ("kết nối không thành công:". php $search = $_POST['search']; $servername = "localhost"; $username = "bob"; $password = "123456"; $db = "classDB"; $conn = new mysqli($servername, $username, $password, $db); if ($conn->connect_error){ die("Connection failed: ".

Làm thế nào để tạo thanh tìm kiếm trong PHP và MySQL?

Hướng dẫn: Cách tạo một hộp tìm kiếm đơn giản trong PHP..
Bắt đầu: Đầu tiên, bạn phải tải xuống và cài đặt XAMPP hoặc bất kỳ máy chủ cục bộ nào có thể chạy tập lệnh PHP.....
Tạo cơ sở dữ liệu.....
Tạo kết nối cơ sở dữ liệu.....
Tạo giao diện.....
Tạo truy vấn lưu.....
Tạo nội dung xem.....
Tạo chức năng chính ..