【发布时间】:2021-10-28 11:59:04
【问题描述】:
我喜欢改进我的搜索模块。我通过 JQuery 实现自动完成。但这仍然不够。我需要将每个列表放在一个锚标记上,这样当他们单击它时,他们会直接进入该特定列表的信息页面。我不知道如何修改列表的href
//index.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style type="text/css">
.ui-autocomplete-row
{
padding:8px;
background-color: #f4f4f4;
border-bottom:1px solid #ccc;
font-weight:bold;
}
.ui-autocomplete-row:hover
{
background-color: #ddd;
}
</style>
</head>
<body>
<div class="container" style="padding:120px;">
<h3 align="center">Searcg Student</h3>
<div class="row">
<div class="col-md-12">
<input type="text" id="search_data" placeholder="Enter Student Name..." autocomplete="off" class="form-control input-lg" />
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('#search_data').autocomplete({
source: "fetch_data.php",
minLength: 1,
select: function(event, ui)
{
$('#search_data').val(ui.item.value);
}
}).data('ui-autocomplete')._renderItem = function(ul, item){
return $("<a href="student.php/=?" class='ui-autocomplete-row'></li>")
.data("item.autocomplete", item)
.append(item.label)
.appendTo(ul);
};
});
</script>
</body>
</html>
//fetch_data.php
<?php
include('dbcon.php');
if(isset($_GET["term"]))
{
$result = $conn->query("SELECT * FROM student WHERE name LIKE '%".$_GET["term"]."%' ORDER BY name ASC");
$total_row = mysqli_num_rows($result);
$output = array();
if($total_row > 0){
foreach($result as $row)
{
$temp_array = array();
$temp_array['value'] = $row['name'];
$temp_array['label'] = '<img src="images/'.$row['photo'].'" width="70" /> '.$row['name'].'';
$output[] = $temp_array;
}
}else{
$output['value'] = '';
$output['label'] = 'No Record Found';
}
echo json_encode($output);
}
?>
【问题讨论】:
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
标签: php html jquery jquery-ui-autocomplete