I’m about to update my search script. The search engine searches in my database where I ask it to search. What is new is I want do some search words, that the users can check in a checkbox, if he wants to use the word in the search.
As for now my search engine works, the only problem is that it only searches the last word and not all of the checked words. My formula looks like this:
<?php
if(isset($_POST['search']))
{
$connx = mysql_connect('localhost', '*******', ',*********') or die("connx");
$db = mysql_select_db('*********') or die(mysql_error());
# convert to upper case, trim it, and replace spaces with "|":
$search = mysql_real_escape_string($search);
$search = strtoupper(preg_replace('/\\s+/', '|', ($_POST['search'])));
# create a MySQL REGEXP for the search:
$regexp = "REGEXP '[[:<:]]($search)[[:>:]]'";
$query = "SELECT * FROM `keywords` WHERE UPPER(`keywords01`) $regexp OR ".
"`keywords02` $regexp OR ".
"`keywords03` $regexp OR ".
"`keywords04` $regexp";
$result = mysql_query($query) or die($query . " - " . mysql_error());
echo "<table>\
";
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td><img src=../{$row['type']}/{$row['folder']}/{$row['date']}-{$row['num']}/{$row['thumbimage']} border=1></td>";
echo "<td>{$row['name']}</td>";
echo "<td>{$row['date']}</td>";
echo "<td><a href=../view.php?id={$row['id']} target=blank>VIEW</a></td>";
echo "</tr>\
";
}
}
else {
echo "<p>Sorry, no results matched your search.</p>";
}
?>
Are there someone, who can figure out, why it is only the last marked checkboxs word that are searched and not all marked words and how do I get it to search for all marked words?
The first line would be applying mysql_real_escape_string to an empty/null string (unless you have register globals on).
Even if the first line worked, the second line is overwriting it with data found in the $_POST array.