PHP 自动完成

Posted

技术标签:

【中文标题】PHP 自动完成【英文标题】:PHP autocomplete 【发布时间】:2013-10-01 18:48:28 【问题描述】:

我试图微调自动完成文本框。我在这里的作品(虽然有点乱)。但是我想在单击文本框时显示可用的值,然后在您键入时进行过滤。另外,有没有更简单的编码方式?

<?php
session_start();
if(isset($_SESSION['myusername'])) 
$User =  $_SESSION['myusername'];

$db1 = realpath('C:\AccessBackEnds\CETracker\CETracker.accdb');
$conn1 = odbc_connect("Driver=Microsoft Access Driver (*.mdb, *.accdb);Dbq=$db1",'','') or die ("Unable to connect to server");

?>
<link rel="stylesheet" href="../datepicker/jquery-ui2.css" />
<script src="../datepicker/jquery-1.9.1.js"></script>
<script src="../datepicker/jquery-ui.js"></script>
<script>
$(function() 
var availableTasks = [
<?php
$info0 = "SELECT DISTINCT TaskName FROM CT:MyTasks WHERE UserName = '$User'";
$rs0=odbc_exec($conn1,$info0);
while($row = odbc_fetch_array($rs0)) 
$TaskName = "" . $row['TaskName'] . "";
echo '"';
echo $TaskName;
echo '", ';

?>""];
$( "#Tasks" ).autocomplete(
source: availableTasks
);
);
</script>

<div class="ui-widget">
<label for="Tasks">Tasks: </label>
<input name="tasks" id="Tasks" style="width: 400px">
</div>

【问题讨论】:

你真的需要小心properly escape all your user data以避免讨厌的SQL injection bugs。 $User这里直接注入到查询中。 【参考方案1】:

我认为如果将脚本拆分为两个文件,可以提高脚本的可读性:

一个前端文件,包含 html 和 JS 代码 一个后端文件,其中包含生成 JSON 代码的 PHP 代码。

前端文件可以通过json调用来调用后端文件,考虑到jQuery UI的“自动完成”小部件内置了这个功能。在“远程 JSONP 源”中查看 here。 PHP也可以通过json_encode函数轻松生成JSON数据。

【讨论】:

以上是关于PHP 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 自动完成文本框

PHP 自动完成

jquery - 使用 PHP 自动完成

使用 php 列表加速 jquery 自动完成

自动完成 jQuery / PHP / MySQL 不返回结果

带有检查名称的 PHP 文件的 jQuery 自动完成