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 自动完成的主要内容,如果未能解决你的问题,请参考以下文章