Create your own search engine with PHP and MySQL

Database Matter

The first step is to open up phpMyAdmin or a database software and incorporate the below query into the SQL section.

1
2
3
4
5
6
CREATE TABLE `searchengine` (
`id` INT NOT NULL AUTO_INCREMENT ,
`pageurl` VARCHAR( 255 ) NOT NULL ,
`pagecontent` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM

The above query will assist the details or information to be stored in the database.

Creating the Form

Now when the database information is now added, let us make the form that will permit the visitors or the end users to perform a search. A file ‘index.php‘ needs to be created.

The form will be using GET instead of POST thereby making the information quite visible in the address bar.

1
2
3
4
5
6
7
8
<form action="search.php" method="GET">
<b>Enter Search Term:</b> <input type="text" name="term" size="50"> <b>Results:</b> <select name="results">
    <option>10</option>
    <option>20</option>
    <option>50</option>
</select><br>
<input type="submit" value="Search">
</form>

The form is now completed. This will permit us to enter in a query and at the same time will permit the count of results that needs to be shown on the form.

Processing the Query

Create a new file ‘search.php’ and this is the page where the results from the search will be displayed.

Let us connect to the database first:

1
2
3
<?php
mysql_connect("localhost", "USERNAME", "PASSWORD");
mysql_select_db("DATABASE");

Now perform the MySQL query (as a query)

1
$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$_GET[term]%' LIMIT 0,$_GET[results]");

The query mentioned above will look in the page data i.e. the Search results after entering in the keyword and display it as many times as you define it. We will create an array now to display the results.

1
2
3
while($ser = mysql_fetch_array($sql)) {
    echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>";
}

Let us now just include a link at the bottom that navigates back to the original index page.

1
2
3
?>
<hr>
<a href="./index.php">Go Back</a>

Adding Information

We are done with the frontend formation of the search engine. We need to come up with a little form now that would store the details in the database.

Let us create a new page namely ‘addurl.php’ and create a simple form.

1
2
3
4
<form action="./addurl2.php" method="POST">
Page URL: <input type="text" name="url" size="50"><br>
<input type="submit" value="Add URL">
</form>

Now create a second page namely ‘addurl2.php‘. Here the processing of information will take place and added to the database ready to be searched.

Connect to the database

1
2
3
<?php
mysql_connect("localhost", "USERNAME", "PASSWORD");
mysql_select_db("DATABASE");

The URL of the page will now get its source code read and made into a variable.

1
$pagedata = htmlspecialchars(file_get_contents($_POST['url']));

This little line will take away some single quotes that will more often than not disorder the query.

1
$pagedata = str_replace("'","",$pagedata);

Let us now insert the information into the database.

1
mysql_query("INSERT INTO searchengine VALUES ('','$_POST[url]','$pagedata')");

Give a small added message, just so you know it’s been added.

1
2
echo "URL Added.<br><a href='./addurl.php'>Continue...</a>";
?>

Search Engine is ready!!!

So we are ready with our nice and simple search engine. One can now go to ‘addurl.php‘ and enter the URL(s) of the page(s) that is required to be incorporated into the search engine that you have just created. Assuming you are looking in for ‘e’, there will be good amount of results for the reason that it’ll be reading stuff like ‘<e>’.

We can make things better by following the below mentioned points.

  • We can alter the ‘addurl.php’ page that will filter out few of the words or phrases.
  • The other important thing is to include pagination and this will permit us to display more than 50 results divided on different pages.
  • An admin control panel can be created where we can add, edit and delete the results as well.
  • The most important part is the security of the search engine and preventing other people to add information. This can be done by doing a password protects on ‘addurl.php’ and ‘addurl2.php’ pages.
  • Addition of the categories such as News, Entertainment, Blogs, technology etc. can be done.

With the completion of this tutorial, we have leant on how to build a HTML form, the connection with the database, the process to read information from a database and obviously how we can add some new information into the database.

Full Source Code of search.php

<html>
<head>
    <title>MrBool Development Article</title>
</head>
<body>
    
<form action="search.php" method="GET">
<b>Enter Search Term:</b> <input type="text" name="term" size="50"> <b>Results:</b> <select name="results">
    <option>10</option>
    <option>20</option>
    <option>50</option>
</select><br>
<input type="submit" value="Search">
</form>
<?php
    mysql_connect("localhost""USERNAME""PASSWORD");
    mysql_select_db("DATABASE");
$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$_GET[term]%' LIMIT 0,$_GET[results]");
    while($ser = mysql_fetch_array($sql)) {
        echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>";
    }
?>
<hr>
<a href="./index.php">Go Back</a>
</body>
</html>

 

Full Source Code of addurl.php

 

<form action="./addurl2.php" method="POST">
Page URL: <input type="text" name="url" size="50"><br>
<input type="submit" value="Add URL">
</form>

 

Full Source Code of addurl2.php

 

<?php
mysql_connect("localhost""USERNAME""PASSWORD");
mysql_select_db("DATABASE");
$pagedata = htmlspecialchars(file_get_contents($_POST['url']));
$pagedata = str_replace("'","",$pagedata);
mysql_query("INSERT INTO searchengine VALUES ('','$_POST[url]','$pagedata')");
echo "URL Added.<br><a href='./addurl.php'>Continue...</a>";
?>

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: