|
|
 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
|
|