Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        3年前关闭。
                    
                
        

我制作了一个自动完成的搜索框,其中列出了不同的课程,基本上,我试图做的是使用它旁边的搜索按钮使用SQL数据库在另一页上显示所选课程的结果。该页面如下所示:index.php

因此,无论您从自动完成功能中选择哪种选择,我都希望“搜索课程”按钮链接到另一页,并立即在之前页面的搜索框中显示所选课程的结果。这些结果将从SQL数据库中提取。

我基本上无法将所有内容链接起来,无法弄清楚。

这是我的搜索框和按钮:

<div class="row">
    <div class="ui-widget col-md-4 col-md-offset-4">
    <label for="tags">Search: </label>
    <input id="tags" type="search">
    <input type="submit" value="Search Courses">
    </div>
</div>


我是否需要设置某种变量才能传递到下一页?

感谢任何帮助,谢谢。

这是我的autocomplete.php文件:

<?php
$mysqli = new mysqli("localhost", "scott", "tiger", "courses");
$term = mysqli_real_escape_string($mysqli,$_REQUEST['term']);
$query = "
SELECT title
  FROM course
 WHERE title LIKE '$term%'
 ORDER BY title";
$return = array();
$result = $mysqli->query($query);
while ($row = $result->fetch_array()){
    array_push($return,$row[0]);
}
echo json_encode($return);
?>


index.html:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Edinburgh Napier University</title>
  <div class="row">
    <div class="col-md-4 col-md-offset-4">
    <img id="napierlogo" src="logo.jpg"/>
    </div>
  </div>

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">

  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">

  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$( "#tags" ).autocomplete({
    source: "autocomplete.php",
    autoFocus:true
});
});
</script>

<script>
  $(function() {
    $( "#menu" ).menu();
  });
  </script>
  <style>
  .ui-menu { width: 150px; }
  </style>

  <script>
  $(function() {
    $( "input[type=submit]" )
      .button()
      .click(function( event ) {
        event.preventDefault();
      });
  });
  </script>

  <?php
    isset($_GET['res'])?$var=mysql_escape_string($_GET['res']):$res='';
  ?>

</head>
<body>

<p></p>

<div class="row">
    <div class="ui-widget col-md-4 col-md-offset-4">
    <label for="tags">Search: </label>
    <input id="tags" type="search">
    <input type="submit" value="Search Courses">
    </div>
</div>

<p></p>

<ul id="menu">
  <li><a href="http://socwebtech1.napier.ac.uk/~40171342/course/index.php">Search</li>
  <li><a href="http://my.napier.ac.uk/Pages/Home.aspx">myNapier</a></li>
  <li>Contact Us
    <ul>
      <li><a href="https://www.facebook.com/EdinburghNapierUniversity/">Facebook</li>
      <li><a href="https://twitter.com/EdinburghNapier?  ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor">Twitter</li>
      <li><a href="https://uk.linkedin.com/edu/edinburgh-napier-university-12617">LinkedIn</li>
    </ul>
  </li>
</ul>

</body>
</html>

最佳答案

首先,如果还没有,则索引页必须是.php文件而不是.html

其次,您需要将搜索框修改为单击搜索按钮时提交的表单。这会将POST请求发送到results.php页面,然后可以使用在文本框中输入的搜索词从数据库加载结果。

您的文本框html代码应变为:

<div class="row">
    <form action="results.php" method="post">
    <div class="ui-widget col-md-4 col-md-offset-4">
        <label for="tags">Search: </label>
        <input id="tags" type="search" name="search">
        <!-- Added the 'name' attribute ^ here
             we'll need this later in the PHP file -->
        <input type="submit" value="Search Courses">
    </div>
    </form>
</div>


而且results.php的顶部应该有一些类似于以下内容的PHP代码:

<?php

$searchTerm = $_POST["search"];
// Key part    ->     ^    ^
// this needs to match the name of the search box in html

// TODO -- Sanitize this input (NEVER trust user input)
// using mysqli_real_escape_string() or similar.
// Then use it to perform your search

// Just for testing:
echo $searchTerm;


有关$_POST的更多信息,请参见:http://php.net/manual/en/reserved.variables.post.php

附带说明,您实际上应该使用PDO进行数据库访问。它具有许多出色的功能,包括有助于防止SQL注入的“准备好的语句”。那是最佳实践,对将来的可维护性也有好处。

此处更多信息:http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

09-16 22:56
查看更多