gpt4 book ai didi

php - jQuery 自动完成 - 按多个值搜索

转载 作者:行者123 更新时间:2023-11-29 18:18:08 26 4
gpt4 key购买 nike

我想使用 jQuery Autocomplete 插件创建用户搜索功能,并从我的 MySQL 数据库获取信息。

我可以通过姓名、电话号码或邮件地址搜索用户,然后显示所有匹配的用户

以下脚本可以工作,但有些事情很困惑。如果我正在搜索“BOUVIER Maxime”用户,它会起作用。但是,如果我写“Maxime BOUVIER”,它就不再起作用了。

有人可以帮助我吗?

这是我的脚本:

$("#user").autocomplete({
source: function (query, response) {
$.ajax({
url: "get_customer.php",
dataType: 'json',
data: query,
type: 'POST',
success: function (data) {
console.log(data);
response(data.map(function (value) {
return {
id: value.id,
value: value.nom,
email: value.email,
telephone: telephone
};
}));
}
});
},
minLength: 2,
delay: 200,
}});

这是我的 php 脚本:

$keyword = $_POST['term'];
$a_json = array();
$a_json_row = array();
$search_param= "%".$keyword."%";

$query = $db->prepare("SELECT id_client, nom, prenom, email,telephone FROM client WHERE nom LIKE :search OR prenom LIKE :search OR email LIKE :search OR telephone LIKE :search");
$query->bindParam(":search", $search_param);
$query->execute();


while($row = $query->fetch(PDO::FETCH_ASSOC)) {

$a_json_row["id"] = $row["id_client"];
$a_json_row["nom"] = strtoupperFr($row["nom"]). " ".ucwords($row["prenom"]);
$a_json_row["email"] = $row["email"];
$a_json_row["telephone"] = $row["telephone"];
array_push($a_json, $a_json_row);

}
echo json_encode($a_json);
$db = NULL;

(我使用 PDO 模拟 ON,为我的查询使用相同的变量)

最佳答案

如果要逐字搜索,则需要拆分单词。替换这个:

$query = $db->prepare("SELECT id_client, nom, prenom, email,telephone  FROM client WHERE nom LIKE :search OR prenom LIKE :search OR  email LIKE :search OR telephone LIKE :search");
$query->bindParam(":search", $search_param);
$query->execute();

这样:

    $where = "";
$arrKeyword = explode(" ", $_POST['term']);
if (!empty($arrKeyword)) {
foreach ($arrKeyword as $i => $word) {
$where .= " OR nom LIKE :search{$i} OR prenom LIKE :search{$i} OR email LIKE :search{$i} OR telephone LIKE :search{$i} ";
}
}

$sql = "SELECT id_client, nom, prenom, email,telephone
FROM client
WHERE FALSE
{$where} ";
$query = $db->prepare($sql);

if (!empty($arrKeyword)) {
foreach ($arrKeyword as $i => $word) {
$search = "%$word%";
$query->bindParam(":search{$i}", $search);
}
}

$query->execute();

关于php - jQuery 自动完成 - 按多个值搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46829071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com