实现多个关键(字)词搜索代码

2016-07-07 16:50 来源:www.chinab4c.com 作者:ecshop专家

1、将search.app.php文件中function index()里面的if (!empty($keyword)) {}这段代码注释掉
2、在goods.model.php加入以下代码:
复制内容到剪贴板代码:
function list_test($key){

$colname_rs = $_GET["keyword"];
$result = explode(" ",$_GET["keyword"]);
$query_rs = "SELECT * FROM (";
for($i=0;$i<count($result);$i++)
{
if($i==0){
$query_rs .= "SELECT * FROM ecm_goods WHERE goods_name LIKE '%$result[$i]%'";
}
else
{
$query_rs .= " UNION SELECT * FROM ecm_goods WHERE goods_name LIKE '%$result[$i]%'";
}
}
$query_rs .= ") T ORDER BY goods_id DESC";
return $this->db->getAll($query_rs);
}
3、回到search.app.php,将function index()里面的$this->assign('goods_list', $goods_list);改为:
复制内容到剪贴板代码:
$list_test = $goods_mod->list_test($key);
if (!empty($key)){
$this->assign('goods_list', $list_test);
}else{
$this->assign('goods_list', $goods_list);
$page['item_count'] = $goods_mod->getCount();
}
4由于时间比较紧,分页代码还没弄,呵呵,不过这个可以从文件里复制,我就不贴代码

回答:
强烈支持!!!

我也支持,来了

可以用不错

不知有没有人能把第四点的 分页 给加上去

有没有演示啊,大家发一下演示吧,是不是可以实现搜索多个关键词都可以呢

按照我发的代码复制进去不就能看到效果了?对吧,呵呵

按照楼主的方法, 出现"HTTP500网站无法显示该网页" 的错误讯息, 连一般的单词搜寻也无法使用了. 不知其他网友情况如何?

我试了 可以的 但是最后一步分页楼主没写出来什么改搜索出来都在一个页面的

我也试过,不行的~!会出错的

初步估计,大家说的错误,是因为代码贴错了位置:
1、在search.app.php文件中将关键词搜索注释,代码位置大约在26行,如图:

2、在goods.model.php文件中的174行后面插入以下代码:如图
  1. function list_test($key){

  2. $colname_rs = $_GET["keyword"];
  3. $result = explode(" ",$_GET["keyword"]);
  4. $query_rs = "SELECT * FROM (";
  5. for($i=0;$i<count($result);$i++)
  6. {
  7. if($i==0){
  8. $query_rs .= "SELECT * FROM ecm_goods WHERE goods_name LIKE '%$result[$i]%'";
  9. }
  10. else
  11. {
  12. $query_rs .= " UNION SELECT * FROM ecm_goods WHERE goods_name LIKE '%$result[$i]%'";
  13. }
  14. }
  15. $query_rs .= ") T ORDER BY goods_id DESC";
  16. return $this->db->getAll($query_rs);
  17. }
复制代码



3、在search.app.php文件中的:$this->assign('goods_list', $goods_list);改为
  1. $list_test = $goods_mod->list_test($key);
  2. if (!empty($key)){
  3. $this->assign('goods_list', $list_test);
  4. }else{
  5. $this->assign('goods_list', $goods_list);
  6. $page['item_count'] = $goods_mod->getCount();
  7. }
复制代码
代码位置大约在105行


解决了, 问题出在资料表的前缀. 把楼主的ecm_goods前缀ecm_改成自己的就可以了. 但却出现几个严重的问题:

1. 所有商品价格全部变成$0
2. 点选商品分类时, 无法正确显示, 不论点选哪个分类, 都是显示全部商品.
3. 无法分页

不知其他朋友是否有出现同样问题?

另外, 多词搜寻时,是否可将结果最接近的排前面, 而不要用商品ID做排序??

按你的方法去做,结果点分类变成空白页

楼主的第四点 分页 要我们自己加呢

原帖由 叶叶 于 2009-10-12 18:33 发表
楼主的第四点 分页 要我们自己加呢


你的分类商品及价格有正常显示吗?