2014-11-06 50 views
0

我正在尋找更好的自動填充功能/處理或從源視圖編碼特定數據的方法。Javascript/PHP/Jquery - 自動填充和數據加密

我有一個客戶信息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.... 

然後我有一個搜索頁面,搜索客戶。該搜索頁面有一個文本輸入框抓住所有公司名稱到一個數組:

while($row = $results->fetch_assoc()) 
{ 
    array_push($customerArray,$row['companyname']); 
} 

然後我利用設在這裏(http://jqueryui.com/autocomplete/

<script> 
    $(function() { 
     availableTags = <?php echo json_encode($customerArray); ?>; 
     $("#customername").autocomplete({ 
      source: availableTags 
     }); 
    }); 
</script> 

其中通過正確地做工作jQuery的自動完成功能自動完成-ING我的輸入框

<label for="customername">Customer Name: </label> 
<input type="text" name="companyname" id="customername" size="30"> 
<span id="customernamespan"></span> 

所以一切工作都很好。我甚至有javascript驗證,以確保進入的客戶是在列表

我的問題與以下是5000+客戶名稱現在是一個數組可見所有誰檢查源代碼。

有沒有什麼方法可以隱藏這些信息,或者有沒有更好的自動完成方法?


我想處理這個問題的唯一真正的辦法是有一箇中間頁確認客戶的姓名和回顯「最佳猜測」。

addnotes.php將有字段和客戶名稱將是常規文本輸入框。

checkCustomer.php將擁有$ _POST中的所有數據並查詢MySQL數據庫中的CustomerName LIKE%token%token%並使用單選按鈕回顯「您是否表示這個」標題。如果是他們中的任何一個,那麼他們可以選擇名稱或點擊添加新客戶。

如果名稱點擊,再通過$ _ POST到handleaddnotes.php,做我的工作,插入和內容十分重要

如果新的客戶端,通過$ _ POST到createCustomer.php,創造新的客戶,然後處理原始addnotes $ _ POST

-

感謝, eherr

+0

建議您可以使用AJAX進行檢查,以便將結果限制爲PHP返回並調用異步 – 2014-11-06 18:44:52

回答

0

我在這種情況下做的是等待,直到用戶在輸入3個或更多字符,然後,啓動一個Ajax請求retrievi納克匹配的第一個字符記錄列表...

<input type="text" name="companyname" id="customername" size="30" onchange="autofill(this.value);"> 



<script type = "text/javascript"> 
    function autofill(text){ 
     if (text.length < 3) return; 
     else ajax.post("get_customers.php", {data:text}, function(response){ 
      $("#customername").autocomplete({ 
      source: response.availableTags 
     }); 
     }); 
    } 
</script> 

希望它可以幫助

0

我認爲你的問題可能會更多的易用性比的代碼。

  1. 如果您加密自動填充數據,您的用戶將如何使用自動填充功能?
  2. 如果您使用LIKE解決方案解決問題,輸入「a」並要求後端爲您檢索選項將陷入幾乎相同的問題。
  3. 如果您的用戶看不到自動填充數據,那麼自動填充可能不是您要查找的內容。

嘗試重新驗證自己的目標:

  1. 什麼是你真正的目標是什麼?
  2. 爲什麼你的用戶必須選擇一個選項?
  3. 這個數據更重要的是什麼?安全還是可用性?
  4. 您的用戶是否可以在軟件中獲取所有客戶名稱?