使用PHP显示未列出的自动完成搜索结果

我试图显示一个不公开的搜索结果,它能够根据从数据库(mysql)的搜索到目标html页面的点击事件。

我正在使用PhoneGap。

到目前为止,我设法实现了一个简单的PHP和jQuery脚本,它让我从一个完成搜索的自动完成搜索字段中简单地弹出。 但我希望用户能够点击它并被定向到一个不同的页面,其中包含从数据库中显示的唯一信息。

PHP

query("SELECT * FROM artwork WHERE name LIKE '%".$searchTerm."%' ORDER BY name ASC"); while ($row = $query->fetch_assoc()) { $data[] = $row['name']; } //return json data echo json_encode($data); ?> 

HTML

           $(document).ready(function() { $(function() { $( "#searchField" ).autocomplete({ source: 'http://localhost/search.php' }); }); });    
Home

Search Database (JSON)



我的SQL表包含5列:

  1. ID
  2. 名称
  3. 路径
  4. 条码
  5. 类型

最终目标计划是最终将这些独特的图像/ pdf显示在所选搜索的唯一页面中。

但我的主要问题是如何让用户能够点击未列出的结果并将其定向到具有从数据库显示的唯一信息的不同页面

使用on select回调( 在文档中 ),在json中包含idlabelvalue然后单击使用window.location.href导航到页面。 您还可以使用ajax调用加载内容。

所以例如使用ajax获取内容:

            
Home

Search Database (JSON)



而你的search.php文件看起来像下面的SQL注入是安全的,因为它使用准备好的查询:

  'could not connect database']); } // auto complete search term if (isset($_GET['term'])) { //get search term $searchTerm = isset($_GET['term']) ? '%'.$_GET['term'].'%' : null; //get matched data from name table $stmt = $con->prepare("SELECT * FROM artwork WHERE name LIKE ? ORDER BY name ASC"); $stmt->bind_param('s', $searchTerm); $result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); foreach ($result as $row) { $data[] = [ 'id' => $row['id'], 'label' => $row['name'], 'value' => $row['id'], ]; } $response($data); } // result item if (!empty($_GET['id'])) { //get matched data from name table $stmt = $con->prepare("SELECT * FROM artwork WHERE id = ? LIMIT 1"); $stmt->bind_param('i', $searchTerm); $response($stmt->get_result()->fetch(MYSQLI_ASSOC)); } ?> 

未经测试但应该工作。