php - jquery-ui-1.8.14 使用 php 和 mysql 自动完成

标签 php mysql jquery-ui jquery-autocomplete

我不是很喜欢 js 和一般的编程,但我非常坚持一些真的不应该太难的事情。欢迎访问测试页面:

[删除链接]

我有三个自动完成字段:当前俱乐部、国家和职业统计数据。 自动完成功能非常适合职业统计数据,我还可以在其中添加字段,自动完成功能也适用于添加的字段。

但对于当前的俱乐部和国家字段,我在输入时会得到结果,但当我单击正确的输出时,它不会显示在输入字段中。

我可以使用其他 js 库使其工作,但它不再适用于添加按钮职业统计字段。

我使用以下库:

<script  type="text/javascript" src="js/jquery-1.6.3.js"></script>
<script  type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
<script  type="text/javascript" src="js/jq-ac-script.js"></script>

当前的俱乐部 html 如下所示:

<p>
    Current club <label>:</label>
    <input type="text" id="currentclub" />
</p>

在定制的 jq-ac-script.js 中(我最初是在网上某个地方找到的 - 不记得在哪里),重要的部分是:

$(document).ready(function(){
    $( "#currentclub" ).autocomplete({
        source: "get_club_list.php",
        minLength: 1    
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
       return $( "<li></li>" )
       .data( "item.autocomplete", item )
       .append( item.currentclub )
       .appendTo( ul );
    };
});

“get_club_list.php”看起来像:

<?php
include ("dbsetup.php");

$return_arr = array();
$param = $_GET["term"];

$fetch = mysql_query("SELECT * FROM FootNews_CLUB 
    WHERE clubShortName LIKE '%$param%'");

/* Retrieve and store in array the results of the query.*/
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

    $row_array['currentclub']           = $row['clubShortName'];
    array_push( $return_arr, $row_array );
}

/* Free connection resources. */
mysql_close($conn);

/* Toss back results as json encoded array. */
echo json_encode($return_arr);

?>

关于为什么当我点击它时所选的俱乐部没有出现的任何想法都会被应用!!

最佳答案

哇,用了我的 php 代码。很酷,很高兴我能提供帮助。 http://www.jensbits.com/2010/03/29/jquery-ui-autocomplete-widget-with-php-and-mysql/

不确定为什么要使用包含 _renderItem 的自动完成代码。我认为您不需要它。

把php代码改成这样:

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

    $row_array['currentclub']  = $row['clubShortName'];
    $row_array['value']   = $row['clubShortName'];
    array_push( $return_arr, $row_array );
}

并且,jquery 用于:

$( "#currentclub" ).autocomplete({
    source: "get_club_list.php",
    minLength: 1    
});

您可以再次阅读我的教程,但自动完成需要返回一个 labelvalue 字段。然后用该值填充选择列表和相应的输入字段。

我留在 $row_array['currentclub'] = $row['clubShortName']; 因为我不知道你以后是否会捕获它。如果不是,则也不需要该行。

由于您控制返回的数据并且可以在 php 中指定 label 和/或 value 字段,所以我不明白您为什么要使用 _renderItem 用于任何自动完成。

顺便说一句,您应该将 mysql_real_escape_string 添加到您的 php 代码中以进行一些 sql 注入(inject)保护:http://www.php.net/manual/en/function.mysql-real-escape-string.php

关于php - jquery-ui-1.8.14 使用 php 和 mysql 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450933/

相关文章:

jquery-ui - 使用 jQuery UI 可拖动/可放置滚动多个放置容器?

javascript - 如何保存 slider jQuery UI 的更改值

jquery - 由于新的 IE 更新,Internet Explorer 在关闭 jQuery UI 对话框时崩溃 (KB2761451)

php - WooCommerce 获取类别 slug - 带有函数的未定义属性通知

php - 连接 SAP Hana 数据库时调用未定义函数 odbc_connect() 消息

PHP转Excel特殊字符问题

MySQL 注册器数据使用 setString 数据,但不使用 getParameter

php - Laravel 错误:方法 Illuminate\View\View::__toString() 不能抛出异常

php - 当我导出我的表时,仍未完成停止

mysql - 包含大写字母的表和 View 名称均以小写形式返回