【发布时间】:2015-01-03 09:39:51
【问题描述】:
我正在寻找更好的自动完成功能/处理方法或从源视图对特定数据进行编码的方法。
我有一个包含客户信息的 MYSQL 数据库:
Record | CompanyName | StreetAddress | City | State | Zip | Telephone
------------------------------------------------------------------------------
1 | Eatery | 123 Main St | NYC | NY | 10001 | 000-000-0000
------------------------------------------------------------------------------
2 | Jo's Gym | 456 2nd St | NYC | NY | 10001 | 000-000-0000
-------------------------------------------------------------------------------
etc....
然后我有一个搜索页面来搜索客户。此搜索页面有一个文本输入框,用于将所有 CompanyName 抓取到一个数组中:
while( $row = $results->fetch_assoc() )
{
array_push($customerArray,$row['companyname']);
}
然后我使用位于此处的 jquery 自动完成功能 (http://jqueryui.com/autocomplete/)
<script>
$(function() {
availableTags = <?php echo json_encode($customerArray); ?>;
$( "#customername" ).autocomplete({
source: availableTags
});
});
</script>
通过自动完成我的输入框可以正常工作
<label for="customername">Customer Name: </label>
<input type="text" name="companyname" id="customername" size="30">
<span id="customernamespan"></span>
所以一切都很好。我什至有 javascript 验证以确保输入的客户在列表中
我的以下问题是 5000+ CustomerName 现在位于一个数组中,所有检查源代码的人都可以看到。
有什么方法可以隐藏这些信息,或者有更好的自动完成方法吗?
我认为处理此问题的唯一真正方法是让中间页面验证客户名称并回显“最佳猜测”。
addnotes.php 将有字段,CustomerName 将是常规文本输入框。
checkCustomer.php 将在 $_POST 中包含所有数据,并在 MySQL 数据库中查询 CustomerName LIKE %token%token% 并使用带有“您的意思是这个”标题的单选按钮回显。如果是他们中的任何一个,那么他们可以选择名称或单击添加新客户。
如果点击名称,则将 $_POST 传递给 handleaddnotes.php 并使用 inserts 和 yada yada 完成我的工作
如果是新客户,将 $_POST 传递给 createCustomer.php 并创建新客户,然后处理原始的 addnotes $_POST
--
谢谢, 埃赫尔
【问题讨论】:
-
建议您可以使用 AJAX 进行检查,因此它将结果限制为 PHP 返回的内容并且调用是异步的
标签: javascript php jquery mysql jquery-ui