虚拟主机域名注册-常见问题CMS教程问题 → 齐博CMS


齐博cms 多关键字搜索的修改窍门
作者:

制作个标签,从后台随便标签位置添加都可以标签代码

<table width="100%" cellpadding="0" cellspacing="0" border="0"> 
  <form name="formsearch" method="post" action="http://www.qibomb.com/do/search.php"> 
    <tr> 
      <td height="14"> 标题:<input type="text" name="keyword" size="10"> 
       关键字:<input type="text" name="keyword1" size="10"> 
        <input type="submit" name="Submit32" value="搜索"> 
        <input type="hidden" name="searchTable" value="article"> 
      </td> 
    </tr>
  </form> 
</table>

然后针对/do/search.php进行修改 

从10行到14行

if( ($_GET[type]||$_POST[type]) && !($keyword||$keyword1) ) //没写入任何搜索字段时执行它 
{ 
 showerr("关键字不能为空"); 
}

17行

if( $_GET[keyword] || $_POST[keyword] || $keyword1 )//如果填写标题或关键词的任意一个的时候从这里开始执行,这里$_POST[keyword] 和$keyword1是对应表单写法不同判断效率是一样的,把$_POST[keyword]改成$keyword也是可以的,但可能会影响到独立搜索页

然后进入if语句我们看到从24行开始有一段代码

[code]if(!$type) 
 { 
  $type='title'; 
 }

我们回过来看一下我们制作的表单,它发送的值中没有$type对应的值,所以$type是空的,执行此段之后,$type=='title' 

好啦,那我们就开始往下找,找到

elseif($type=='title') //因为$type=='title'满足条件,务必执行此段代码,很显然从这段代码下手 
 { 
  $SQL.=" AND BINARY A.title LIKE '%$keyword%' "; 
}

修改成以下代码

elseif($type=='title') 
 { 
  $SQL.=" AND BINARY A.title LIKE '%$keyword%' "; //这个就不用多讲了,就是对标题模糊查询 
  if($keyword1) 
  { 
   //echo 'test';exit; 
   unset($array);//清空数据 
   $query = $db->query("SELECT B.aid FROM {$pre}keywordid B LEFT JOIN {$pre}keyword A ON A.id=B.id WHERE A.keywords='$keyword1'"); 
  //上面这一行乍一看感觉一头雾水,没关系哥也是猜测不是很理解,大概意思从p8_keywordid表里获取符合$keyword1的文章id。从上一个elseif中抄袭的[s:29]   
  //p8文章模型关联各种数据表,挺复杂的,如果你把这些数据表都理清了,你就[s:30]  很NB了 
   while($rs = $db->fetch_array($query)){ 
    $array[]=$rs[aid];//对应文章aid放到$array数组 
   } 
   if($array){ 
    $SQL.=" AND A.aid IN (".implode(',',$array).") "; //把$array的数据用逗号分隔放到一个字符串,然后关联文章aid来查找 
   }else{ 
    $SQL.=" AND 0 "; //没找到关键词 
   } 
  } 
 }

请替换do/search.php文件别忘了备份



来源:
阅读:1787
日期:2016-09-03

推荐朋友 】 【 评论 】  【 字体: 】 
上一篇:齐博cms"相关文章"拓展的几种技巧
下一篇:js实现当前栏目高亮代码 实测可用
  >> 相关文章
 
发表评论


点  评: 字数0
用户名:  密码:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款