gpt4 book ai didi

php - jQueryUI 自动完成 : Returning data from multiple columns in a MySQL database and joining them

转载 作者:行者123 更新时间:2023-11-29 00:51:41 25 4
gpt4 key购买 nike

我对 jQuery、jQueryUI 及其小部件相当陌生。我已经用对话框小部件解决了我的问题。在我继续之前的最后一件事是自动完成小部件。为了向您展示我目前所处的位置,这是我目前所拥有的。

Javascript

$(document).ready(function() {
var cache = {},
lastXhr;
$( "#place" ).autocomplete({
minLength: 2,
select: function(event, ui) {
$('#placed_id').val(ui.item.id);
},
source: function( request, response ) {
var term = request.term;
if ( term in cache ) {
response( cache[ term ] );
return;
}

lastXhr = $.getJSON( "/database/places.php", request, function( data, status, xhr ) {
cache[ term ] = data;
if ( xhr === lastXhr ) {
response( data );
}
});
}
});
});

文件 places.php

<?php
$dbhost = 'localhost';
$dbuser = 'abc123';
$dbpass = 'abc123';
$dbname = 'test';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

$return_arr = array();

if ($conn)
{
$fetch = mysql_query("SELECT * FROM places where place_name like '%" . mysql_real_escape_string($_GET['term']) . "%' ORDER BY LENGTH(place_name) ASC");

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['id'] = $row['place_id'];
$row_array['value'] = $row['place_name'];
array_push($return_arr,$row_array);
}
}
mysql_close($conn);
echo json_encode($return_arr);
?>

目前,数据库是这样的

------------------------------------
|place_id | place_name |
------------------------------------
| 1 | Chicago, Illinois |
| 2 | Hillsboro, Illinois |
| 3 | Jacksonville, Illinois |
------------------------------------

我希望它更具体一些,这样我就可以制作一个页面,用户可以在其中按城市、州或两者进行搜索。像这样:

---------------------------------------
|place_id | place_state | place_city |
---------------------------------------
| 1 | Illinois | Chicago |
| 2 | Illinois | Hillsboro |
| 3 | Illinois | Jacksonville|
---------------------------------------

问题是:需要对 javascript 和 php 文件进行哪些更改才能实现此目的?

[编辑]我希望它仍然返回隐藏 place_id 值的 [City, State]。

此外,我们非常欢迎任何有关如何更好地实现两者的建议。谢谢。

最佳答案

对于MYSQL部分:您可以使用SUBSTRING_INDEX根据需要拆分文本:

select place_id,
substring_index(place_name,',',1) 'Place_State',
substring_index(place_city,',',-1) 'Place_City'
from Places
Where ...

然后在您的 php 文件中 添加新列 place_stateplace_city 并将其格式化为 json 格式,以便稍后阅读使用 JavaScript:

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
array_push($return_arr,array('id' => $row['place_id'], 'Place_State' => $row['place_state'], 'Place_City' => $row['Place_City'));
}
mysql_close($conn);
echo json_encode(array("return_arr" => $return_arr));

然后使用 javasctipt 将 json 数组格式化为您想要将其输出给用户的示例,如下所示:

$("#return_arr").append("<table'><tr>" + /* #return_arr is html element*/
"<tr>" +
"<th id='thead'>Place Id</th>" +
"<th id='thead'>State</th>" +
"<th id='thead'>City</th>" +
"</tr>");
$.each(data.return_arr,function(){
var row = "<tr>" +
"<td>" + this["id"] + "</td>" +
"<td>" + this["Place_State"] + "</td>" +
"<td>" + this["Place_City"] + "</td>"+
"</tr>";
$("#return_arr").append(row);
});
$("#return_arr").append("</table>");

这只是一个示例,说明如何读取 json 数组并对其进行格式化,我不擅长 jQuery UI 或 jQuery Autocomplete,但您可以使用这种方式将数据输出到您的 Automcomplete 将显示的 html div上的数据。

希望对您有所帮助。

关于php - jQueryUI 自动完成 : Returning data from multiple columns in a MySQL database and joining them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277966/

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