2012-09-19 88 views
2

我使用php和javascript爲我的wordpress網站創建一個動態填充的自動完成搜索引擎。mysql查詢只返回字符串的一個字

例如:用戶想要搜索「Nike Shoes」,以便他們在搜索引擎中輸入Nike Shoes,並且在鍵入前3個字母后應該看到Nike Shoes作爲建議。

我遇到了一個問題,只有耐克這個詞出現在我的建議中。這種情況發生在您輸入搜索引擎的任何條款中。只有字符串的第一個字會出現。我相信這是與單詞之間的空格有關,但不知道如何解決它。

這裏是我的代碼是動態填充的自動完成:

var availableTags = '<?php $result = mysql_query("select * from state"); 
        $row = mysql_fetch_array($result); 
        echo $row['name']; ?>'.split(" "); 
        $("#title").autocomplete({ 
        source: availableTags, 
        minLength: 3, 
        position: { my : "left top", at: "left top" }, 
        appendTo: "#search-container" 
        }); 
        }); 

我從這個網站創建此代碼:http://www.tizag.com/mysqlTutorial/mysqlquery.php

如果有人能幫我,我會非常感激。

感謝,

史蒂夫

+0

你只取結果的單行。使用['json_encode'](http://stackoverflow.com/questions/383631/)而不是手動引用結果。不要用古代的mysql_ *函數編寫新的代碼。他們不再保持和社區已經開始了[棄用過程(http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – DCoder

+0

謝謝你的迴應,我感謝你的時間。我肯定會把這些材料放在閱讀清單上,但是對於這個例子,我正在編輯一個已經使用這個老方法的wordpress插件,如果可能的話,我寧願保留它。只是一些額外的信息,耐克鞋的例子是在1排,如果有幫助,它不是一排耐克和另一排鞋。再次感謝 – binga30

+1

如果你確實有一排有'耐克鞋',那麼你應該只期待一個詞,因爲你正在分裂的空間。沒有實際生成顯示的代碼很難說出發生了什麼。 – SimaPro

回答

0

我使用該功能自動提示列表。你可以稍加修改使用

function get_autosuggest_list($str=''){ 

     $q  = strtolower($str); 
     $entry = array(); 
     $i=0; 
     if(!empty($q)) 
     { 
      $entry[$i] = "A.fieldname like '".$q ."%'" ; 
      $i++; 
     } 

     $sqlentry = ""; 
     $j=0; 
     foreach($entry as $data) 
     { 

      if($j==0) 
      $sqlentry = " where ".$data; 
      else 
      $sqlentry .= " and ".$data; 

      $j++; 
     } 
     $sql = "SELECT DISTINCT field_name FROM `table` A ".$sqlentry." "; 
     $query = mysql_query($sql); 
     $res = mysql_fetch_array($query); 

     foreach($res as $row) 
     { 
      $items = $row->fieldname; 
      echo "$items\n"; 
     } 

    } 

用法:

get_autosuggest_list(string);