2014-06-09 47 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? –