Free web development scripts for the webmasterDevelopment Scripts


 
 Site Navigation
 o Development Scripts
 o Text Only Edition
 o PHP.net News
 o Tutorials
 o Register an account
 o New entries this week
 o Affiliates/Links
 o Contact Us
 o About us
 o Advanced Search

 Browse Path

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/local/psa/home/vhosts/devscripts.net/httpdocs/online.php on line 28
 o  users online
 o Most users online: 67
 o Home
  o PHP
   o Searching Stuff
    o Script

 Member Login
User Name
Password

 Standards
Valid XHTML 1.0!
Valid 
CSS!

 Recommended Links
 o PHP Freaks
 o Designer Baby Clothes
 o Advertise Here Make Money
 o Free Online Invoices
 o Free Wedding Websites
 o UK Business Franchises
 o OxyScripts
 o Send Invoices for Free
 o designplace
 o Wedding Vendor Directory

Using PHP to search a MySQL database with paged results (Rated 4.5)

Description:

Got a MySQL database with content within it? Want to be able to search it? Read on...

Pre-requisites: PHP, MySQL and a Web Server capable of parsing PHP pages, like Apache or IIS. This search script does not spider all your pages by crawling the links, so the content you want to be searchable must be within the database. Knowledge of PHP and MySQL is also necessary because this script is just the bones of a working solution. Numerous edits must take place upon this script before it is a usable solution.

Code starts here


Just after the <body> tag of your page, place the following HTML. This is for the form which will contain the textfield to enter our search string in.

<form name="form" action="search.php" method="get">
<input type="text" name="q" />
<input type="submit" name="Submit" value="Search" />
</form>

Now, enter the following PHP. Follow the PHP comments for what the script is doing.

<?php

// Get the search variable from URL
$var = @$_GET['q'] ;
$trimmed = trim($var); //trim whitespace from the stored variable

// rows to return
$limit=10;

// check for an empty string and display a message.
if ($trimmed == "")
{
echo
"<p>Please enter a search...</p>";
exit;
}

// check for a search parameter
if (!isset($var))
{
echo
"<p>We dont seem to have a search parameter!</p>";
exit;
}

//connect to your database ** EDIT REQUIRED HERE **
mysql_connect("localhost","username","password"); //(host, username, password)

//specify database ** EDIT REQUIRED HERE **
mysql_select_db("database") or die("Unable to select database"); //select which database we're using

// Build SQL Query
$query = "select * from the_table where 1st_field like \"%$trimmed%\"
order by 1st_field"
; // EDIT HERE and specify your table and field names for the SQL query

$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);

// If we have no results, offer a google search as an alternative

if ($numrows == 0)
{
echo
"<h4>Results</h4>";
echo
"<p>Sorry, your search: &quot;" . $trimmed . "&quot; returned zero results</p>";

// google
echo "<p><a href=\"http://www.google.com/search?q="
. $trimmed . "\" target=\"_blank\" title=\"Look up
"
. $trimmed . " on Google\">Click here</a> to try the
search on google</p>"
;
}

// next determine if s has been passed to script, if not use 0
if (empty($s)) {
$s=0;
}

// get results
$query .= " limit $s,$limit";
$result = mysql_query($query) or die("Couldn't execute query");

// display what the person searched for
echo "<p>You searched for: &quot;" . $var . "&quot;</p>";

// begin to show results set
echo "Results";
$count = 1 + $s ;

// now you can display the results returned
while ($row= mysql_fetch_array($result)) {
$title = $row["1st_field"];

echo
"$count.)&nbsp;$title" ;
$count++ ;
}

$currPage = (($s/$limit) + 1);

//break before paging
echo "<br />";

// next we need to do the links to other results
if ($s>=1) { // bypass PREV link if s is 0
$prevs=($s-$limit);
print
"&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\">&lt;&lt;
Prev 10</a>&nbsp&nbsp;"
;
}

// calculate number of pages needing links
$pages=intval($numrows/$limit);

// $pages now contains int of pages needed unless there is a remainder from division

if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}

// check to see if last page
if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {

// not last page so give NEXT link
$news=$s+$limit;

echo
"&nbsp;<a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 &gt;&gt;</a>";
}

$a = $s + ($limit) ;
if (
$a > $numrows) { $a = $numrows ; }
$b = $s + 1 ;
echo
"<p>Showing results $b to $a of $numrows</p>";

?>


Submitted by Devscripts on 13-02-2003 20:21


Rate This Script

User Contributed Comments

On 27-09-2003 16:42 foo said:

Little bug fix: :) If the search doesn't find anything it only shows the 'no results found' part fo the script and not the messed up 'results found' part under it aswell: Under (below google part)


On 27-09-2003 16:47 foo said:

Sorry, PHP didn't show: http://members.lycos.co.uk/foowebdesign/odds/searchfix.txt or try here. Remeber to save as PHP :)


On 14-02-2009 12:32 mrsyardbroom said:

I couldn't get this script to work. I can bring up the first 10 results OK but the next link just returns me to the same 10 results. Has anyone else tried this script and got it working?


On 06-08-2010 20:03 said:

56FmfL bcbejtdqpmis, [url=http://pgqwacoipzuo.com/]pgqwacoipzuo[/url], [link=http://ahuwbmuatlnq.com/]ahuwbmuatlnq[/link], http://nzggootzlwar.com/


On 10-08-2010 23:51 said:

R5urig agxphyqmxkhm, [url=http://sszuqhvyjbzj.com/]sszuqhvyjbzj[/url], [link=http://sxhprazmdkme.com/]sxhprazmdkme[/link], http://agktltfjsadr.com/


Registered Members login
© Copyright 2003 - Devscripts.net