在使用PHP显示结果时,在搜索框中显示搜索条件

时间:2011-10-21 21:48:10

标签: php mysql forms search

我有一个搜索表单,并在与搜索表单相同的页面上显示结果。因此,在进行搜索之前,所有可能的结果都是可见的。在表单中输入关键字后,结果只会包含关键字。我希望表单显示在显示结果时输入到表单中的关键字。我尝试了很多东西,我最近的尝试是进入表格的各个部分,但没有运气。我搜索了多个教程网站,但没有找到要解决的特定请求。你能否帮助我在显示结果时让搜索条件保留在搜索框中?这是我正在使用的代码:

    <html>
    <body>
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>  
    <?php 
        function getRecords($query) {
        $con = mysql_connect("localhost", "movie", "moviepw");
        if (!$con)
        {
        die('Could not connect: ' . mysql_error());
        } 
        mysql_select_db("movies", $con);

        $result = mysql_query($query);
        return $result;   
    }

    function buildQuery() {

    $keyword = $_GET['keyword'];
    $sql = "SELECT * from table1 WHERE (movie_title LIKE '%$keyword%'
                     OR movie_description LIKE '%$keyword%')";
    return $sql;
    } ?>

   <form action="movie_form.php" method=get>
    <fieldset>
     <legend>Movies</legend>
     <label for="keyword">Search</label>
     <input id="keyword" name="keyword" />
     <input type=submit name=submit value=Search />
     <? echo $keyword ?>
    </fieldset>
   </form>

    <?
      $query = buildQuery();
      $records = getRecords($query);

     while($row = mysql_fetch_array($records)){ ?>
    <table>
      <tbody>
       <table border='1'>
        <tr>
         <td><?= $row['movie_title']; ?></td>
         <td><?= $row['movie_rating']; ?></td>
         <td><img src="<?= $row['movie_image'];?>"></td>
         <td><?= $row['movie_description']; ?></td>
         <td><a href="movie_form.php">Return to Search</a></td>
        </tr>
      <? } ?>
      </tbody>
     </table>
 </body>
 </html>

1 个答案:

答案 0 :(得分:0)

将“value”属性添加到“关键字”表单输入中。像这样:

<input id="keyword" name="keyword" value="<?php echo "$keyword"; ?>"/>

此外,将$ keyword的设置移出buildQuery()方法,以便在输出表单时可用。你可以在设置error_reporting之后把它放好:

<?php error_reporting (E_ALL ^ E_NOTICE); 
      $keyword = rtrim($_GET['keyword']);
?>

最后,这段代码容易受到sql注入攻击。看一下这个: How can I prevent SQL injection in PHP?