-2

请帮助我...我是新手!请告诉我该怎么办。

处理的.php

<?php
include_once('../../dbConnect.inc.php');
$sql="SELECT name FROM artist";
$artist = select($sql);
disconnect();
$output_items = array();
while($row = mysql_fetch_array($artist))
{
    $results[] = array('label' => $row['name']);
}
echo json_encode($results);
?>

索引.php

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#artist").autocomplete(
    {
        source: 'processed.php',
        });
        });
</script>

我有这个问题:http: //jsbin.com/alaci5

4

2 回答 2

2

该自动完成功能可能会将一些变量传递给您的 processes.php 页面。

用于 var_dump($_GET)查看您正在传递的所有内容。

在其中一个$_GET元素中,您将拥有页面上存在的文本框的内容。为了演示,我将使用$_GET['text']. 您需要找出哪个部分包含您需要的数据。

您需要做的是使用此值在数据库中搜索要返回的结果列表。

$sql="SELECT name FROM artist";
$artist = select($sql);

这是您的脚本,因为它存在。它最终看起来可能与此相似。

$text_input = mysql_escape_string($_GET['text']);
$sql="SELECT name FROM artists WHERE name LIKE '%$text_input%'";
$artist = select($sql);

您将希望获得与在面向用户的页面上输入的文本相似的结果。

给你的一些注意事项

  1. 我以前mysql_escape_string()只是可能你已经拥有的东西。虽然这确实有效(驾驶一辆破烂的雪佛兰起搏器也可以,但还有更好的方法),但不推荐这样做,这让我们为第 2 点做好了准备。

  2. 使用旧的 mysql 扩展并不是一个好主意,它已被mysqli, 和PDO取代。

  3. 您需要转义您的数据,这就是使用 mysqli 完成的方式

于 2013-08-13T18:22:45.910 回答
2

自动完成需要源(当指定 URL 以过滤掉结果时)。

从文档:

字符串:使用字符串时,自动完成插件期望该字符串指向将返回 JSON 数据的 URL 资源。它可以在同一台主机上,也可以在不同的主机上(必须提供 JSONP)。自动完成插件不过滤结果,而是添加了一个带有术语字段的查询字符串,服务器端脚本应该使用它来过滤结果。例如,如果源选项设置为“ http://example.com ”并且用户键入 foo,则会向http://example.com?term=foo发出 GET 请求。数据本身可以采用与上述本地数据相同的格式。

因此,在您的 PHP 代码中,您必须执行以下操作:

include_once('../../dbConnect.inc.php');
$sql="SELECT name FROM artist WHERE `name` like '%".mysql_real_escape_string($_GET['term'])."%'";
$artist = select($sql);
$output_items = array();
while($row = mysql_fetch_array($artist)) {
    $results[] = array('label' => $row['name']);
}
echo json_encode($results);
于 2013-08-13T18:41:33.343 回答