使用Ajax和PHP检索数据的搜索框
下面是索引页:包含以下代码:数据按预期填充到div中使用Ajax和PHP检索数据的搜索框,php,mysql,ajax,Php,Mysql,Ajax,下面是索引页:包含以下代码:数据按预期填充到div中 <h2>Search for users</h2> <input type="text" name="search" id="search" autocomplete="off" placeholder="Enter Customer ID here....">
<h2>Search for users</h2>
<input type="text" name="search" id="search" autocomplete="off" placeholder="Enter Customer ID here....">
<div id="output"></div>
<script type="text/javascript">
$(document).ready(function(){
$("#search").keyup(function(){
var query = $(this).val();
if (query != "") {
$.ajax({
url: 'ajax-db-search.php',
method: 'POST',
data: {query:query},
success: function(data){
$('#output').html(data);
$('#output').css('display', 'block');
$("#search").focusin(function(){
$('#output').css('display', 'block');
});
}
});
} else {
$('#output').css('display', 'none');
}
});
});
</script>
搜索用户
$(文档).ready(函数(){
$(“#搜索”).keyup(函数(){
var query=$(this.val();
如果(查询!=“”){
$.ajax({
url:'ajaxdb search.php',
方法:“POST”,
数据:{query:query},
成功:功能(数据){
$('#output').html(数据);
$('#output').css('display','block');
$(“#搜索”).focusin(函数(){
$('#output').css('display','block');
});
}
});
}否则{
$('#output').css('display','none');
}
});
});
这是ajaxdb search.php页面。(在IF标记中,我用==尝试了它,但还没有好运。)
嗯,你说你试过=
应该是=
而不是=
首先请注意您的sql查询任何类型的查询都应该是prepare语句,即使您信任您的用户
现在请注意:
echo“planA”=“planA”?“是”:“否”//输出号。你试过这个吗?
编辑:我忽略了“但由于某些原因,$plan变量始终是planA..”,这是因为ifs中的=
$plan=”“;
如果($plan=“a”){
echo$计划;
}
如果($plan=“b”){
echo$计划;
}
如果($plan=“c”){
echo$计划;
}
//产出:abc
最后,请使用else if,您不需要检查3次是否只能是1个选项
编辑2:我想你还有一段路要走。请查看下面的代码。
我认为,以下是解决您的bug的完整方法:
这里我使用php-pdo
执行搜索任务
我正在创建一个两个文件'search.php'是一个向query.php
文件发送ajax请求的文件
search.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search</title>
<!-- jQuery cdn link -->
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
</head>
<body>
<input type="text" id="search" placeholder="Search">
<div class="table-div" style="display: none"></div>
</body>
</html>
<script>
$(document).ready(function(){
$("#search").keyup(function(){
$.get("/query.php", {data:$(this).val()}, function(data, status){
let row = JSON.parse(data);
let table = "";
table += "<table>";
table += "<thead>";
table += "<tr>";
table += "<th>Customer name</th><th>Customer salary</th>";
table += "</tr>";
table += "</thead>";
table += "<tbody>";
if(row.data != "No data found") {
$.each(row.data, function(key, value){
table += "<tr>";
table += "<td>"+ value.customer_name +"</td>";
table += "<td>"+ value.cust_sal +"</td>";
table += "</tr>";
});
}
table += "</tbody>";
table += "</table>";
$(".table-div").html(table);
$(".table-div").show();
});
});
});
</script>
搜寻
$(文档).ready(函数(){
$(“#搜索”).keyup(函数(){
$.get(“/query.php”,{data:$(this.val()},函数(数据,状态){
让row=JSON.parse(数据);
让表=”;
表+=”;
表+=”;
表+=”;
表+=“客户名称客户薪资”;
表+=”;
表+=”;
表+=”;
如果(row.data!=“未找到数据”){
$.each(行、数据、函数(键、值){
表+=”;
表+=“”+value.customer_name+“”;
表+=“”+value.cust_sal+“”;
表+=”;
});
}
表+=”;
表+=”;
$(“.table div”).html(表格);
$(“.table div”).show();
});
});
});
query.php
<?php
// This is a database connectivity
$conn = new PDO("mysql:host=localhost; dbname=test;", 'root', '');
if(isset($_GET['data']))
{
$query = "%".$_GET['data']."%";
$searchSQL = "SELECT * FROM cust WHERE customer_name LIKE :cname";
$searchState = $conn->prepare($searchSQL);
$searchState->bindParam(":cname", $query);
if($searchState->execute())
{
if($searchState->rowCount() > 0)
{
$data = $searchState->fetchAll();
}
else
{
$data = "No data found";
}
}
echo json_encode(["data" => $data]);
}
?>
单个=
指定一个值,在您的代码中,结果被评估为布尔结果-true
。至少在这些条件下,您应该使用==
。执行查询后,您不会获取查询结果。您只需在$query
数组中为元素赋值,但此时该变量是一个字符串。您可能有一个服务器错误日志,其中充满了PHP警告和错误。找到错误日志,修复你在那里看到的所有错误,再次询问你的代码是否仍然不能正常工作。但始终适用于最后一个条件@TangentiallyVertically正如我已经指出的,您的代码也存在其他问题。请在更新部分@TangentiallyVertically$plan中的图像始终仅为planA中获取一个战利品。它永远不会改变。它没有在@ziaahsan中循环。@DoorsShelters您的代码中有拼写错误。请重新检查和编辑代码。例如:$query=“选择*从创建客户位置…”;然后$plan=$query['plan'];但是$query是作为数组访问的字符串吗?@DoorsShelters请参见编辑2。我已经对我的职位做了更改。这或许会让事情变得明朗起来。
<?php
// This is a database connectivity
$conn = new PDO("mysql:host=localhost; dbname=test;", 'root', '');
if(isset($_GET['data']))
{
$query = "%".$_GET['data']."%";
$searchSQL = "SELECT * FROM cust WHERE customer_name LIKE :cname";
$searchState = $conn->prepare($searchSQL);
$searchState->bindParam(":cname", $query);
if($searchState->execute())
{
if($searchState->rowCount() > 0)
{
$data = $searchState->fetchAll();
}
else
{
$data = "No data found";
}
}
echo json_encode(["data" => $data]);
}
?>