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



