Posted by Talha Suleman : Talha Suleman Thursday 18 September 2014

How to Create your own search engine with PHP and MySQL 


Search Engine with PHP and MySQL
Search Engine with PHP and MySQL 

Are you tired of hearing Google and Yahoo all the time whenever you want to look out for anything? Then let us try to build our own Search Engine making use of PHP and SQL. Obviously there is no way we can make the Google lose the race but we can give a good attempt to create our own search engine.
Let us learn to come up with our own search engine and see the visitors coming and doing a search in a good number with the help of an Html search form or Button. We will deploy php language and MySql database services in order to implement this functionality. Hence it is expected to have a good grasp on the basic concepts of both of these before you move on further. We will complete this tutorial making use of the most basic code and not going through the complex sql queries. Here it is assumed that the basics of Structured query language is known to everyone and is been used in your codes more often than not. So let us focus on our first HTML code so as to create a Search Button and form that will be used by the visitor to enter in any query.

Database Matter

The first step is to open up phpMyAdmin or a database software and incorporate the below query into the SQL section.
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.
<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:
<?php
mysql_connect("localhost", "USERNAME", "PASSWORD");
mysql_select_db("DATABASE");
Now perform the MySQL query (as a query)
$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.
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.
?>
<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.
<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

<?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.
$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.
$pagedata = str_replace("'","",$pagedata);
Let us now insert the information into the database.
mysql_query("INSERT INTO searchengine VALUES ('','$_POST[url]','$pagedata')");
Give a small added message, just so you know it's been added.
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.

Conclusion

The article aimed to provide a simple and easy route to come up with our own Search Engine making use of PHP and SQL language.

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

Thanks For Visit Tnl Solution

Subscribe to Posts | Subscribe to Comments

Search Tnl Solution

- Copyright © Total Solution - Tnl Solution - Powered by Blogger TnlLinker - Designed by TalhaSuleman -