2012-09-19 66 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);