2014-06-09 51 views
0

如何使它每次(使用keyup?)某人在搜索框中鍵入一個字母時,它顯示MySQL DB中具有相同行數的行他們中的字母(使用findUser函數)?默認情況下,它顯示所有用戶:PHP + jQuery + Ajax + Json打印搜索結果的每個鍵擊

當我在上面的框中輸入「.com」時,我需要重置表並僅顯示帶有.com電子郵件的行。

我當前的代碼(我不知道如果我把.keyup在正確的地方,但它似乎在適當的時候提醒我):

的index.php

<input id="search"> 
    <table border="1" BORDERCOLOR=black> 
    <thead> 
    <tr> 
     <th>Name</th><th>LastName</th><th>E-Mail</th> 
    </tr> 
    </thead> 

    <tbody id="theContent"> 

    </tbody> 


    </table> 



    </body> 

    <script type="text/javascript"> 

    function loadUser(){ 

     $.ajax({ 
      url: 'users.ajax.php' 

     }).done(function(data){ 
      var HTML = ''; 
      data = JSON.parse(data); 

      $.each(data['usersData'], function(key, val){ 
       HTML += getSingleUserLine(val); 
      }); 

      $('#search').keyup(function() { 
       alert("Handler for .keyup() called."); 
      }); 

      $('#theContent').html(HTML); 

     }); 

    } 

    function getSingleUserLine(data){ 
     if(data){ 
      var string = ''; 

      string = '<tr><td>'+data.fname+'</td><td>'+data.lname+'</td><td>'+data.email+'</td></tr>'; 

      return string; 

     }else{ 
      return false; 
     } 
    } 


    $(document).ready(function(){ 

     loadUser(); 

    }); 
    </script> 

function loadUser($userID = false){ 
     global $DB; 
     if($userID === false){ 
      $data = $DB->query("SELECT * FROM `users`"); 
     }else{ 
      $data = $DB->query("SELECT * FROM `users` where ID = '$userID' "); 
      $data = $data[0]; 
     } 
     return $data; 
    } 


    function findUser($phrase){ 
     global $DB; 
     $result= $DB->query("SELECT * FROM users WHERE fname LIKE '%$phrase%' OR lname LIKE '%$phrase%' OR email LIKE '%$phrase%'"); 
     return $result; 
    } 

,最後users.ajax.php:

$return = array(); 

include('db.class.php'); 
include('user.class.php'); 

$DB = new DB (Cant give you this :() 
$USER = new User(); 




$data = $USER->loadUser(); 


$return['usersData'] = $data; 

echo json_encode($return); 
在user.class.php主要功能
+3

當然,您可以[使用現有的插件](http://jqueryui.com/autocomplete/)。 – Blazemonger

+0

我不需要自動完成正在寫入的文本,我需要它使用該文本作爲關鍵字進行搜索,然後在每次輸入符號時都將其打印出來(關鍵字) – GytisK

+0

您將需要使用正則表達式來匹配您的​​的HTML,並且如果找到,則顯示.parent()並隱藏所有其他 s。 – StaticVoid

回答

0

我認爲這將完美滿足您的要求,如果您使用jQuery數據表插件。它易​​於使用和維護。轉到https://datatables.net/,然後在表格中鍵入任何字符串,以匹配表中匹配字符

+0

再次,是否有可能沒有datatables插件?也許有一種方法可以調用我在user.class.php中每次點擊編寫的「findUser」函​​數? – GytisK

+0

是的,你可以做到沒有插件,發送與每個類型的字符(即在keyup事件)的Ajax調用服務器,並得到result.But whyn't現有的解決方案。是否有必要重新發明whell? –