2011-10-21 60 views
1

我有一个搜索表单,并将搜索结果显示在与搜索表单相同的页面上。因此,在进行搜索之前,所有可能的结果都是可见的。一旦将关键字输入到表单中,结果只是包含关键字的结果。我希望表单显示显示结果时输入到表单中的关键字。我尝试过多种方法,而我最近的尝试是进入表单的各个部分,但没有运气。我搜索了多个教程网站,但没有找到要解决的特定请求。显示结果时,您可以帮助我将搜索条件保留在搜索框中吗?这里是我使用的代码:使用PHP显示结果时在搜索框中显示搜索条件

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

回答

0

添加的“值”属性的“关键词”的形式输入。事情是这样的:

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

此外,移动$关键字的设置出了BuildQuery对于()方法,因此,这将是可用的,当你的形式输出。您可以在error_reporting设置后正确设置:

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

最后,此代码易受sql注入的影响。看看这个: How can I prevent SQL injection in PHP?

+0

谢谢,埃里克。我在那里添加了它,但是我仍然没有得到搜索条件来继续在搜索框中显示。 – CherylAnnCE

+0

另外,感谢注射信息! – CherylAnnCE

+0

我看到了问题。 $关键字是在buildQuery方法中设置的,因此在输出表单时它不可用。我修改了我的答案以反映这一点。另外,我收紧了线。尝试这些修订;这个对我有用。 – Eric