If you wish to search for a match within a field, rather than matching the entire field with a MySQL query, you can use LIKE. Here is an HTML page that will display an input box on a form:
<html> <head> <title>Search</title> </head> <body bgcolor="white"> <form method="POST" action="search.php"> <table> <col span="1" align="right"> <tr> <td><font color="blue">Search Term:</font></td> <td><input type="text" name="searchterm" size=50></td> </tr> <tr> <td><input type="submit" value="Submit"></td> </tr> </table> </form> </body> </html> |
Here is the PHP code that will take the search term and then display a different field of a record that contains the match:
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso8859-1"> <title>Search</title> </head> <body bgcolor="white"> <?php foreach($HTTP_POST_VARS as $varname => $value) $formVars[$varname]=$value; require_once("config.php"); $db1=mysql_connect($dbhost, $dbuname, $dbpass); mysql_select_db($dbname); $searchterm=$formVars["searchterm"]; $query="SELECT * FROM entry WHERE searchfield LIKE '%".$searchterm."%'"; $result = mysql_query($query); $j=1; while ($row = mysql_fetch_row($result)) { print $row[3]; } mysql_close($db1); ?> </body> </html> |
The config.php file needs to have your real logon and database information in it. We like to make this an inclusion for security reasons. Here is an example file:
<?php $dbhost = "host"; $dbuname = "user"; $dbpass = "password"; $dbname = "search"; ?> |
Here is what these two pages look when running:
This works for us, because the field we are searching on happens to be a list of keywords related to the field name. For full text searching, see this excellent article: Using MySQL Full-text Searching