1

データベースを検索できる単純な検索エンジンを作成しました。このように動作します: チェックボックスで検索したい単語をチェックします。結果はフォームを使用して送信されます。問題は、最後にチェックした単語のみを検索することです。これは、最後にチェックした単語の結果のみを表示する 3 つの単語をチェックすることを意味します。ここに私のフォームがあります:

<form method="POST" action="<?=$_SERVER["PHP_SELF"]?>"> 
<p>Search for: 
</p> 
Books: <input type="checkbox" name='search' value="Books"> 
Movies: <input type="checkbox" name='search' value="Movies"> 
Outdoor: <input type="checkbox" name='search' value="Outdoor"> 
Indoor: <input type="checkbox" name='search' value="Indoor"> 
</p> 
<p><input type='submit'  value='Search'></p> 
</form> 

これは結果を生成する私のコードです:

    <?php 
if(isset($_POST['search'])) 
{ 
  $connx = mysql_connect('localhost', 'USER', 'PASSWORD') or die("connx"); 
  $db = mysql_select_db('DB_NAME') or die(mysql_error()); 

  # convert to upper case, trim it, and replace spaces with "|": 
  $search = (ini_get('magic_quotes_gpc')) ? stripslashes($_POST['search']) : 
            $_POST['search']; 
  $search = mysql_real_escape_string($search); 
  $search = strtoupper(preg_replace('/\s+/', '|', trim($_POST['search']))); 

  # create a MySQL REGEXP for the search: 
  $regexp = "REGEXP '[[:<:]]($search)[[:>:]]'"; 
  $query = "SELECT * FROM `galleries` WHERE UPPER(`keywords1`) $regexp OR ". 
           "`keywords2` $regexp"; 
  $result = mysql_query($query) or die($query . " - " . mysql_error()); 

echo "<table>\n"; 
while($row = mysql_fetch_assoc($result)) 

{ 
    echo "<tr>"; 
    echo "<td><img src=../thumbs/{$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>\n"; 
  }  
} 
?> 

検索エンジンで複数の単語を検索したり、検索結果を表示したりする方法を誰か教えてもらえますか?

4

2 に答える 2