php搜索引擎暗示

问题描述:

你好,我想问一个问题,现在我开始使用搜索引擎,所以你可以建议一些函数或方法如何开始或从数据库用户制作搜索引擎时使用什么通过用户名。它可以从另一个字的一个符号搜索,我写'k',然后它搜索所有以用户名'k'开头的用户名。 例子: http://postimg.org/image/sg84ny3w3/php搜索引擎暗示

尝试:

private function Search() 
{ 
    global $database; 

    if(isset($_POST['s'])) { 
     if($_POST['s'] == '1' || $_POST['s'] == '2' || $_POST['s'] == '3') 
      $type = $_POST['s']; 
     $database->getSearchData($type, $_POST['xs']); 
     } 

    else if(!preg_match("/[^0-9A-Za-z]/", $_POST['xs'])){ 
     $error = "You entered invalid data"; 
     } 

     return false; 
} 

HTML:

<div id="content"> 
<div style="padding:20px"> 
<?echo $error;?> 
    <form action="index.php?mod=highscore&t=search" method="POST" accept-charset="utf-8"> 
    <div class="title_box"><div class="title_inner"> 
      What are you searching for?  </div></div> 
     <div class="title2_box"><div class="title2_inner"> 
     <p> 
      <table width="80%"> 
       <tr> 
        <td><input type="radio" name="s" value="1"></td> 
        <td>Player</td> 
       </tr> 
       <tr> 
        <td><input type="radio" name="s" value="2"></td> 
        <td>Guild (Name)</td> 
       </tr> 
       <tr> 
        <td><input type="radio" name="s" value="3"></td> 
        <td>Guild (Guild Tag)</td> 
       </tr> 
       <tr> 
        <td>Text:</td> 
        <td colspan="2"><input type="text" name="xs" size="30" maxlength="30" value=""></td> 
       </tr> 
       <tr> 
        <td colspan="3"><input type="submit" value="Search" class="button3" name="search"></td> 
       </tr> 
      </table> 
     </p> 
    </form> 
     </div></div> 
<br /> 
<?if($functions->Search() == false) {?> 
    <div class="title_box"><div class="title_inner"> 
     Results </div></div> 
    <div class="title2_box"><div class="title2_inner"> 
    <p> 
        <table width="50%"> 
      <tr> 
       <td>Player</td> 
       <td>Level</td> 
       <td>Total honour</td> 
      </tr> 
      <tr><td class="f" colspan="2">No results</td></tr></table> </p> 
    </div></div> 
    <?} else {?> 
     <div class="title_box"><div class="title_inner"> 
     Results </div></div> 
    <div class="title2_box"><div class="title2_inner"> 
    <p> 
        <table width="50%"> 
      <tr> 
       <td>Player</td> 
       <td>Level</td> 
       <td>Total honour</td> 
      </tr> 
      <tr><td class="f" colspan="2"><?$functions->Search();?></td></tr></table> </p> 
    </div></div> 
    <?}?> 
</div> 

<script type='text/javascript'>var tickerArray = new Array();function doTicker(){ 
            n=new Date(); 
            if (tickerArray.length > 0) 
            { 
             for (i = 0; i < tickerArray.length; i++) 
             { 
              if (isNaN(document.getElementById(tickerArray[i]["id"]))) 
              { 
               var e = document.getElementById(tickerArray[i]["id"]); 
               s = tickerArray[i]["sek"]; 
               m = 0; 
               h = 0; 
               d = 0; 
               if (s < 0) 
                e.innerHTML = "---"; 
               else 
               { 
                var timeTXT = s + " s"; 
                if (s > 59) 
                { 
                 m = Math.ceil(s/60); 
                 s = s-m * 60; 
                 timeTXT = m + " m"; 
                } 
                if (m > 59) 
                { 
                 h = Math.ceil(m/60); 
                 m = m - h * 60; 
                 timeTXT = h + " h"; 
                } 
                if (h > 24) 
                { 
                 d = Math.ceil(h/24); 
                 h = h-d * 24; 
                 timeTXT = d + " d"; 
                } 

                e.innerHTML = timeTXT; 
                tickerArray[i]["sek"]--; 
               } 
              } 
             } 
            window.setTimeout("doTicker();",999); 
           } 
          }doTicker();</script> 
</div> 
+1

在发布数据中搜索%和*,然后将其传递给数据库:其中名称像$ variable。 “%” – 2013-04-05 20:04:33

+0

它应该看起来像这样: “SELECT * FROM users WHERE username ='$ keyword%''? – karolis 2013-04-05 20:08:17

SELECT * FROM users where username like 'k%' 将返回其中的用户名,其中k

SELECT * FROM user where username LIKE '%k%'

开头的所有用户记录

将返回包含角色k

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

  1. 使用这个简单的代码的所有用户记录: http://www.simonerodriguez.com/ajax-form-submit-example/

  2. 删除表单上的 “on_submit” 行动。

  3. 在文本框中添加属性: onKeyDown =“xmlhttpPost('response_ajax.php,'MyForm','MyResult',''); return false;”

  4. 第三个参数 “MyResult” 将是无论你在php文件输出,所以它会被放置在一个名为 “MyResilt” DIV ID = “MyResult”>/DIV>

DIV

您的php文件可以输出如下内容: echo“$ Result”

这会做你想做的。