【发布时间】:2015-11-30 20:11:25
【问题描述】:
您好,我正在开发一个 ajax php 搜索。当有人键入时,它将在多个表中搜索数据库。我的问题是我需要它来显示一个名称,例如如果有人键入我希望它显示的名称 Apple tv 你想要类别还是特定产品?我该怎么做?
这是我目前所拥有的:
<?php
//Database values
$host = "localhost";
$dbname = "tool";
$user = "root";
$password = "root";
$database = new mysqli();
$database->connect($host, $user, $password, $dbname);
//Kill website if database connection fails
if($database->connect_errno) {
die("Database connection failed.");
}
//Connect to the database
//Clean user input
$search = $database->real_escape_string($_POST['search']);
$search = preg_replace("/[^A-Za-z0-9 ]/", '', $search);
$search = "'%".$_POST['search']."%'";
$query = "SELECT * FROM brands WHERE braname LIKE $search ORDER by braname ASC LIMIT 5";
if($results = $database->query($query)){
while ($player = $results->fetch_assoc()){
echo "<div class='col-sm-4' id='adjust-Searchbox'>" . "<a href=\"users/e-commerceTemplateSingleBrand.php?braid=".$player['braid']."\">" . "<p>" . $player["braname"] . "</p>" . "<img style='width:100%; height:50px;' src=\" uploads/".$player['braimg']."\">" . "</a>" . "</div>"
;
}
}else{
die("Database connection failed.");
}
$search = $database->real_escape_string($_POST['search']);
$search = preg_replace("/[^A-Za-z0-9 ]/", '', $search);
$search = "'%".$_POST['search']."%'";
$query = "SELECT * FROM Products WHERE name LIKE $search ORDER by name ASC LIMIT 5";
if($results = $database->query($query)){
while ($player = $results->fetch_assoc()){
echo "<div class='col-sm-4' id='adjust-Searchbox'>" . "<p>" . $player["name"] . "</p>" . "<img style='width:100%; height:50px;' src=\" uploads/".$player['proimg']."\">" . "</br>" . "</div>";
}
}else{
die("Database connection failed.");
}
【问题讨论】:
-
在
INPUT表单项上使用onkeyup方法向您的php 代码调用Ajax 请求,发送$_POST['search']中的搜索值,我建议在调用执行Ajax 调用的Javascript 函数时onkeyup或onchange你应该有一个一两秒的计时器,它会延迟 Ajax 调用的执行,这个时间应该在每次按下函数的新调用时重置,以避免过多的 Ajax 调用。 -
我的搜索工作由你写一些东西,例如苹果电视。一旦用户键入它会问他们你的意思是类别还是产品。如果他们单击类别,它将提供该类别中的产品列表。如果是产品,那么它将显示该单个产品。