2012-05-10 56 views
1

我有一點PHP和JQuery的它創建的自動完成表單:jQuery用戶界面自動完成 - 選擇價值

<? 
mysql_select_db($database_database_connection, $database_connection); 
$query = "SELECT * FROM Device_tbl"; 
$result=mysql_query($query, $database_connection) or die(mysql_error()); 
$findrow = array(); 
while($row = mysql_fetch_assoc($result)){ 
    $manufac = $row['Manufacturer']; 
    $mod = $row['Model']; 
    $string = $manufac.' '.$mod; 
    $findrow[] = $string; 
} 

?> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#search_input").watermark("Begin Typing to Search"); 

    var availableTags = <? echo json_encode($findrow);?>; 
    $("#search_input").autocomplete({ 
      source: availableTags 
      }); 


    $("#search_input").bind("autocompleteselect", function() { 
     var search_input = $(this).val(); 
     if (search_input =='') search_input ='*'; 
     var dataString = 'keyword='+search_input; 

     if (search_input.length > 2 || search_input=='*') { 
      $.ajax({ 
       type: "GET", 
       url: "core/functions/searchdata.php", 
       data: dataString, 
       success: function(server_response) { 
        $('#searchresultdata').empty(); 
        $('#searchresultdata').append(server_response); 
        $('span#category_title').html(search_input); 
       } 
      }); 
     } 

     return false; 
    }); 
    $("#search_input").trigger('keyup'); 
}); 
</script> 

searchdata.php

mysql_select_db($database_database_connection, $database_connection); 
$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%$keyword%' OR Model LIKE '%$keyword%'"; 
if ($keyword=='*') $query = "SELECT Image, Manufacturer, Model FROM Device_tbl"; 
$result=mysql_query($query, $database_connection) or die(mysql_error()); 

if($result){ 
    if(mysql_affected_rows($database_connection)!=0){ 
      while($row = mysql_fetch_object($result)){ 
?> 
    <div class="hold-cont"> 
     <div class="holder"> 
      <div class="image-hold" > 
       <img class="image-icon" src="<? echo $deviceimg.($row->Image); ?>"/> 
</div> 
     </div> 
     <div class="device-name devicename-txt"><? echo($row->Manufacturer. ' ' .$row->Model); ?></div> 
    </div> 
    <? 
    } 
    }else { 
     echo 'No Results for :"'.$_GET['keyword'].'"'; 
    } 

} 
else { 
    echo 'Parameter Missing'; 

自動完成部分工作正常,然而我無法工作的是在選定的值上運行.ajax。例如,如果我開始輸入「Apple iMac」,只能達到「Ap」。建議是Apple iMac,但是當我點擊這個建議時,它會在「Ap」上運行查詢 - 也就是說,它只運行查詢內容,而不是點擊的內容。

任何想法如何使這項工作,當用戶點擊建議或命中輸入?

+0

你能提供的'劇本searchdata.php' – mgraph

+0

是啊,現在又增加了它 – K20GH

回答

1
$("#search_input").autocomplete({ 
    source: availableTags, 
    select: function(event, ui) { 
     sendSelected(ui.item.value); 
     } 
    }); 

function sendSelected(_val){ 
    var search_input = _val; 
    if (search_input =='') search_input ='*'; 
    var dataString = 'keyword='+search_input; 

    if (search_input.length > 2 || search_input=='*') { 
     $.ajax({ 
      type: "GET", 
      url: "core/functions/searchdata.php", 
      data: dataString, 
      success: function(server_response) { 
       $('#searchresultdata').empty(); 
       $('#searchresultdata').append(server_response); 
       $('span#category_title').html(search_input); 
      } 
     }); 
    } 
} 

searchdata.php:

$splitKeyword = explode(" ", $keyword); 
if(sizeof($splitKeyword)==3){ 
    $splitKeyword[1] = $splitKeyword[1]." ".$splitKeyword[2]; 
} 
$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%".$splitKeyword[0]."%' OR Model LIKE '%".$splitKeyword[1]."%'"; 
+0

工作太棒了!謝謝。但是,我的SQL顯然不起作用。它在製造商或型號中尋找喜歡本田思域。既然它找不到那樣的東西,它什麼都不會返回。即使數據庫作爲製造商本田和它的模型,思域:/ – K20GH

+0

試試這個:'... LIKE'%「。$ keyword。」%'OR ...' – mgraph

+0

同樣的問題。我相信它是因爲ui.item.value是數據庫中製造商和模型字段的組合。但是,我認爲,因爲我正在做一個LIKE查詢,它仍然會找到它。 '本田思域'就像製造商'本田'......對吧? – K20GH

相關問題