2015-06-04 50 views
0

我有一個自動完成的形式從表中拉頭名工作。不過,我想使用2個字段自動完成。這兩個字段是NAME和LAST_NAME,它們是數據庫中的兩個單獨的字段。這是搜索代碼,我有:自動完成加入2列的MySQL和PHP

<?php 
include('db_connection.php'); 
if(isset($_POST['search_keyword'])) 
{ 
    $search_keyword = $dbConnection->real_escape_string($_POST['search_keyword']); 
    $sqlUsers="SELECT ID, NAME, LAST_NAME FROM b_user WHERE NAME LIKE '%$search_keyword%'"; 
    $resUsers=$dbConnection->query($sqlUsers); 

    if($resUsers === false) { 
     trigger_error('Error: ' . $dbConnection->error, E_USER_ERROR); 
    }else{ 
     $rows_returned = $resUsers->num_rows; 
    } 

$bold_search_keyword = '<strong>'.$search_keyword.'</strong>'; 
if($rows_returned > 0){ 
     while($rowUsers = $resUsers->fetch_assoc()) 
     { 
      echo '<div class="show" align="left"><span class="user_name">'.str_ireplace($search_keyword,$bold_search_keyword,$rowUsers['NAME']).'</span></div>'; 
     } 
    }else{ 
     echo '<div class="show" align="left">No matching records.</div>'; 
    } 
} 
?> 

上面的代碼返回在下拉精細的名字,但我需要它來搜索的名稱,然後繼續到LAST_NAME。有沒有加入NAME和LAST_NAME的方法?我曾經嘗試這樣做:

$sqlUsers="SELECT ID, CONCAT(NAME, ' ', LAST_NAME) AS FULLNAME FROM b_user WHERE FULLNAME LIKE '%$search_keyword%'"; 

,然後顯示:

<span class="user_name">'.str_ireplace($search_keyword,$bold_search_keyword,$rowUsers['FULLNAME']).'</span> 

但這似乎徹底打破搜索。我覺得我已經爲期不遠上述但不快樂呢。您的幫助將不勝感激。

+0

您是否收到任何錯誤 –

+0

在控制檯中,我只是在與該文件相關的POST上發生內部服務器錯誤。 – andy

+0

然後你的代碼中有一個PHP錯誤需要檢查。張貼整個代碼'<跨度類= 「USER_NAME」> 'str_ireplace($ SEARCH_KEYWORD,$ bold_search_keyword,$ rowUsers [ 'FULLNAME'])。' ' –

回答

0

你可以把你的名字和LAST_NAME查詢,讓您對如何輸出結果自動完成更大的控制權分離。你只需要改變你的查詢的WHERE子句也找上了過去的名稱相匹配。我認爲自動完成通常非常鬆散匹配,這可能會起作用。

SELECT ID, NAME, LAST_NAME FROM b_user WHERE NAME LIKE '%$search_keyword%' OR LAST_NAME LIKE '%$search_keyword%'