gpt4 book ai didi

javascript - ExtJS - 如何根据我输入的内容过滤数据库中的数据

转载 作者:行者123 更新时间:2023-12-03 10:26:09 24 4
gpt4 key购买 nike

我创建了一个 ExtJS (EXtjs4) 应用程序,其中有一个组合框并用数据库中的值填充它。

这是我的代码。首先是我的商店:

var autoCompleteStore = new Ext.data.JsonStore({
fields:['onomasia'],
proxy: new Ext.data.HttpProxy({
url: 'autocomplete/getautocomplete.php',
method: 'POST'
}),
baseParams:{task: "onomasia"}
});

组合框定义:

// DEFINE THE COMBO BOX FOR THE AUTOCOMPLETE
var nodeOikismoiField = new Ext.form.ComboBox({
id:'nodeId',
fieldLabel: 'Insert NodeId',
store: autoCompleteStore,
mode: 'remote',
displayField: 'onomasia',
allowBlank: false,
valueField: 'onomasia',
anchor:'95%',
triggerAction: 'all',
name: 'oikismos',

labelAlign : 'right',
width: 200,
margin: 5,
minChars:1,
typeAhead: true, // CHANGES
typeAheadDelay: 200,// CHANGES
queryParam: 'query' // CHANGES

});

和我的 PHP 脚本:已编辑

<?php
include 'postgresConnect.php';
$where = '';
$queryVar = $_GET['query']; // GET INSTEAD OF POST
$where = " WHERE komvos LIKE '$queryVar%' ";
$query = "SELECT komvos FROM oikismoi_covered $where";
$resultImg = pg_query($dbconn, $query);
$json=array();
while($oikismos=pg_fetch_row($resultImg)){
$json[]=array(
'onomasia'=> $oikismos[0]
);
}
echo json_encode($json);
?>

我的问题如下:当我开始在组合上输入内容时,如何才能仅获取可能的值?例如,如果我开始输入“Ae...”以仅获取以这些字母开头的值。

我意识到我必须更改 php 文件中的 sql 查询并将值传递到其中。但是我应该在 ExtJS 部分更改哪部分代码呢?

最佳答案

在您的 PHP 脚本中,您可能需要执行以下操作:

$where = '';
if (isset($_POST['query'])) {
$queryVar = $_POST['query'];
$where = " WHERE `onomasia` LIKE '$queryVar%' "
}

$query = "SELECT onomasia FROM oikismoi_covered $where LIMIT 3";

请记住,这个特定的查询容易受到 MySql 注入(inject)攻击,应事先进行清理,或者使用带有 PDO 的准备好的语句,这样会好得多。

在您的组合定义中,您应该应用 typeAheadtypeAheadDelay 配置

这些配置应该有帮助:

typeAhead: true,
typeAheadDelay: 200,
queryMode: 'remote',
queryParam: 'query' // this is the parameter name passed back to PHP

这个link还应该帮助提供更多细节。

关于javascript - ExtJS - 如何根据我输入的内容过滤数据库中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29390563/

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