K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

修正后的关于后台搜索代码

12Next >

糊涂 发表于:11-06-12 00:34 [添加收藏] 楼主 [回复] #Top#
糊涂 人气:42 积分:22 金币:769

昨天写了http://www.kingcms.com/forums/Use/t15385/。坛友测试只能搜索文章,因为当时没想到那么多,就单纯的搜索了文章。晚上闲来无事。就修改了下。可以搜索“文章、产品、商品”等。我就不再多讲什么了。等下打包代码。
   此外我想提醒下。最新的这段搜索,也有写死的地方。就是表名称,我是这样想的。假如我就是一个后台使用者,我不知道它属于什么类型,我只能通过它文章的名称来搜索。所以就把表名写死了,但真的不利于数据量特别大的搜索。以后有好办法。或者好思路后我会继续发上来。
 
查询的表有 king_article,king_shop,king_bbs,king_product。你可以直接拷贝elseif后的代码就行。小功能,让各位见笑了。!我已经测试过文章、产品均可用。

代码无法上传。就先贴出来吧。用editplus写的代码不太规范。等用zendstudio调整下吧。不懂怎么用可以先去看http://www.kingcms.com/forums/Use/t15385/(欢迎大家继续测试)


<?php
/**
 *@author 河北糊涂老仙
 
 *
 */
 require_once '../global.php';

 function king_def(){

 global $king;
 $king->access('portal_search');//等下具体看看access函数功能
 //开始组建表单很简单。一个下拉单
 $s=$king->openForm('manage.search.php?action=search');// 构造表单开始
  //$str='<span><input type="checkbox" name="iscommend" id="iscommend" value="1" '.$checked.'/><label for="iscommend">'.$king->lang->get('portal/label/attrib/iscommend').'</label></span>';
  $array = array(
   $king->lang->get('portal/search/number'),
   $king->lang->get('portal/search/searchwords'),
  );

 $s.=$king->htmForm('',kc_htm_select('choose',$array));
 $s.=$king->htmForm('',kc_htm_input('search'));
 //$s.=$king->htmForm('',kc_htm_submit($king->lang->get('portal/search/submit1')));
 $s.='<script type="text/javascript">';
 $s.='function check(){
  
  var oForm = document.k_formlist;
   if(oForm.choose.value == 0){
    var search = oForm.search.value;
    if(isNaN(search)||search.length == 0||search.length>8)
     {
    alert("好歹给个数字才能查询啊");
    oForm.search.focus();
    return false;
     }
 }

    if(oForm.choose.value == 1){
    var search = oForm.search.value;
    if(search.length > 50||search.length == 0)
     {
    alert("好歹输入个文字啊,不要超过20个字或不要为空哦");
    oForm.search.focus();
    return false;
     }
 }
  
  oForm.submit();
  }';
 $s.='</script>';
 $s.=$king->closeForm($king->lang->get('portal/search/submit1'),'check()');
 $king->skin->output($king->lang->get('portal/search/searchtag'),$left,$right,$s);
 }

function king_search()
{
 /**
  * 关键字搜索先判断文章,如果每只再判断论坛。再判断其他
  *
  */
    global $king;
 $king->access('portal_search');
     $id = $_POST['choose'];
     $keywords = $_POST['search'];;

 if($id == 0)
 {
  $sql ="select kid,ktitle,k_author from %s__article where kid ='$keywords'";
    if($res=$king->db->getRows($sql))
 
  $res=array();

 //准备开始列表
 $_cmd=array(
  'delete'=>$king->lang->get('system/common/del'),
 );
 
 $manage="'<a href="manage.content.php?action=edt&listid=4&kid='+K[0]+'">'+$.kc_icon('k5','".$king->lang->get('system/common/edit')."')+'</a>'";
 $manage.="+'<a class="k_ajax" rel="{CMD:'delete',list:'+K[0]+'}">'+$.kc_icon('l5','".$king->lang->get('system/common/del')."')+'</a>'";
 $manage.="+$.kc_updown(K[0])";

 $_js=array(
  "$.kc_list(K[0],K[1],'manage.content.php?action=edt&listid=4&kid='+K[0])",
  $manage,
  "kstyle(K[1],K[2],K[3],K[4])",
  "'<i>'+isset(K[0],K[5])+'</i>'",
 );
 
 $s=$king->openList('','',$_js,$king->db->pagelist('manage.search.php?pid=PID&rn=RN',$king->db->getRows_number('%s__article')));
 $s.="function kstyle(l1,l2,l3,l4){var I1;l4 ? I1='<font style="font-size:'+l3+'px;color:'+l2+';font-weight:bold;">'+l1+'</font>' : I1='<font style="font-size:'+l3+'px;color:'+l2+';">'+l1+'</font>';return I1;};";
 $s.="function isset(id,is){var I1,ico;is?ico='n1':ico='n2';";
 $s.="I1='<a id="commend_'+id+'" class="k_ajax" rel="{CMD:'commend',is:'+(1-is)+',ID:'commend_'+id+'',kid:'+id+',IS:2}" >'+$.kc_icon(ico)+'</a>';return I1;};";

 $s.='ll(''.$king->lang->get('portal/search/chaxun').'','manage',''.$king->lang->get('portal/search/zuozhe').'','<i>'.$king->lang->get('portal/label/attrib/iscommend').'</i>',1);';
 foreach($res as $rs){
    $s.='ll('.$rs['kid'].',''.$rs['ktitle'].'',0);';
 }
 //结束列表
 $s.=$king->closeList();

 //list($left,$right)=king_inc_list();
 $king->skin->output($king->lang->get('portal/search/result'),$left,$right,$s);

 }elseif($id== 1)
 {
  
  //$sql ="select kid,ktitle,k_author from %s__article where ktitle like '%$keywords%'";
   $where =" ktitle like '%$keywords%'";
       if( $king->db->getRows_number('%s__article',$where) >0)
     {
    $sql ="select kid,ktitle,listid from %s__article where ktitle like '%$keywords%'";

 
     if(!$res=$king->db->getRows($sql,1))
  $res=array();

  //准备开始列表
 $_cmd=array(
  'delete'=>$king->lang->get('system/common/del'),
 );
 
 foreach($res as $rs){
  $manage="'<a href="manage.content.php?action=edt&listid=".$rs['listid']."&kid='+K[0]+'">'+$.kc_icon('k5','".$king->lang->get('system/common/edit')."')+'</a>'";
 $manage.="+'<a class="k_ajax" rel="{CMD:'delete',list:'+K[0]+'}">'+$.kc_icon('l5','".$king->lang->get('system/common/del')."')+'</a>'";
 $manage.="+$.kc_updown(K[0])";

 $_js=array(
  "$.kc_list(K[0],K[1],'manage.content.php?action=edt&listid=".$rs['listid']."&kid='+K[0])",
  $manage,
  "kstyle(K[1],K[2],K[3],K[4])",
  "'<i>'+isset(K[0],K[5])+'</i>'",
 );
 
 $s=$king->openList('','',$_js,$king->db->pagelist('manage.search.php?pid=PID&rn=RN',$king->db->getRows_number('%s__article')));
 $s.="function kstyle(l1,l2,l3,l4){var I1;l4 ? I1='<font style="font-size:'+l3+'px;color:'+l2+';font-weight:bold;">'+l1+'</font>' : I1='<font style="font-size:'+l3+'px;color:'+l2+';">'+l1+'</font>';return I1;};";
 $s.="function isset(id,is){var I1,ico;is?ico='n1':ico='n2';";
 $s.="I1='<a id="commend_'+id+'" class="k_ajax" rel="{CMD:'commend',is:'+(1-is)+',ID:'commend_'+id+'',kid:'+id+',IS:2}" >'+$.kc_icon(ico)+'</a>';return I1;};";

 $s.='ll(''.$king->lang->get('portal/search/chaxun').'','manage',''.$king->lang->get('portal/search/zuozhe').'','<i>'.$king->lang->get('portal/label/attrib/iscommend').'</i>',1);';
    $s.='ll('.$rs['kid'].',''.$rs['ktitle'].'',0);';
 }
 //结束列表
 $s.=$king->closeList();

 //list($left,$right)=king_inc_list();
 $king->skin->output($king->lang->get('portal/search/result'),$left,$right,$s);
 }
 elseif($king->db->getRows_number('%s__product',$where) >0)
  {
     $sql= "SELECT kid,ktitle,listid FROM %s__product WHERE ktitle LIKE '%$keywords%'";
     if(!$res=$king->db->getRows($sql,1))
   $res=array();
  //准备开始列表
 $_cmd=array(
  'delete'=>$king->lang->get('system/common/del'),
 );
 
 
 foreach($res as $rs){
$manage="'<a href="manage.content.php?action=edt&listid=".$rs['listid']."kid='+K[0]+'">'+$.kc_icon('k5','".$king->lang->get('system/common/edit')."')+'</a>'";
 $manage.="+'<a class="k_ajax" rel="{CMD:'delete',list:'+K[0]+'}">'+$.kc_icon('l5','".$king->lang->get('system/common/del')."')+'</a>'";
 $manage.="+$.kc_updown(K[0])";

 $_js=array(
  "$.kc_list(K[0],K[1],'manage.content.php?action=edt&listid=".$rs['listid']."&kid='+K[0])",
  $manage,
  "kstyle(K[1],K[2],K[3],K[4])",
  "'<i>'+isset(K[0],K[5])+'</i>'",
 );
 
 $s=$king->openList('','',$_js,$king->db->pagelist('manage.search.php?pid=PID&rn=RN',$king->db->getRows_number('%s__product')));
 $s.="function kstyle(l1,l2,l3,l4){var I1;l4 ? I1='<font style="font-size:'+l3+'px;color:'+l2+';font-weight:bold;">'+l1+'</font>' : I1='<font style="font-size:'+l3+'px;color:'+l2+';">'+l1+'</font>';return I1;};";
 $s.="function isset(id,is){var I1,ico;is?ico='n1':ico='n2';";
 $s.="I1='<a id="commend_'+id+'" class="k_ajax" rel="{CMD:'commend',is:'+(1-is)+',ID:'commend_'+id+'',kid:'+id+',IS:2}" >'+$.kc_icon(ico)+'</a>';return I1;};";

 $s.='ll(''.$king->lang->get('portal/search/chaxun').'','manage',''.$king->lang->get('portal/search/zuozhe').'','<i>'.$king->lang->get('portal/label/attrib/iscommend').'</i>',1);';
    $s.='ll('.$rs['kid'].',''.$rs['ktitle'].'',0);';
 }
 //结束列表
 $s.=$king->closeList();

 //list($left,$right)=king_inc_list();
 $king->skin->output($king->lang->get('portal/search/result'),$left,$right,$s);

  }
 elseif($king->db->getRows_number('%s__shop',$where) >0)
  {

     $sql= "SELECT kid,ktitle,listid FROM %s__shop WHERE ktitle LIKE '%$keywords%'";
      if(!$res=$king->db->getRows($sql,1))
   $res=array();
   //准备开始列表
   $_cmd=array(
   'delete'=>$king->lang->get('system/common/del'),
   );
 
 foreach($res as $rs){
$manage="'<a href="manage.content.php?action=edt&listid=".$rs['listid']."kid='+K[0]+'">'+$.kc_icon('k5','".$king->lang->get('system/common/edit')."')+'</a>'";
 $manage.="+'<a class="k_ajax" rel="{CMD:'delete',list:'+K[0]+'}">'+$.kc_icon('l5','".$king->lang->get('system/common/del')."')+'</a>'";
 $manage.="+$.kc_updown(K[0])";

 $_js=array(
  "$.kc_list(K[0],K[1],'manage.content.php?action=edt&listid=".$rs['listid']."&kid='+K[0])",
  $manage,
  "kstyle(K[1],K[2],K[3],K[4])",
  "'<i>'+isset(K[0],K[5])+'</i>'",
 );
 
 $s=$king->openList('','',$_js,$king->db->pagelist('manage.search.php?pid=PID&rn=RN',$king->db->getRows_number('%s__bbs')));
 $s.="function kstyle(l1,l2,l3,l4){var I1;l4 ? I1='<font style="font-size:'+l3+'px;color:'+l2+';font-weight:bold;">'+l1+'</font>' : I1='<font style="font-size:'+l3+'px;color:'+l2+';">'+l1+'</font>';return I1;};";
 $s.="function isset(id,is){var I1,ico;is?ico='n1':ico='n2';";
 $s.="I1='<a id="commend_'+id+'" class="k_ajax" rel="{CMD:'commend',is:'+(1-is)+',ID:'commend_'+id+'',kid:'+id+',IS:2}" >'+$.kc_icon(ico)+'</a>';return I1;};";

 $s.='ll(''.$king->lang->get('portal/search/chaxun').'','manage',''.$king->lang->get('portal/search/zuozhe').'','<i>'.$king->lang->get('portal/label/attrib/iscommend').'</i>',1);';
    $s.='ll('.$rs['kid'].',''.$rs['ktitle'].'',0);';
 }
 //结束列表
 $s.=$king->closeList();

 //list($left,$right)=king_inc_list();
 $king->skin->output($king->lang->get('portal/search/result'),$left,$right,$s);

 

 


  }
 elseif($king->db->getRows_number('%s__shop',$where) >0)
  {

     $sql= "SELECT kid,ktitle,listid
FROM %s__bbs
WHERE ktitle LIKE '%$keywords%'";
  // print_r($sql);
        if(!$res=$king->db->getRows($sql,1))
     // echo '<pre>';
    // print_r($res);
     //echo '</pre>';
  $res=array();

  //准备开始列表
 $_cmd=array(
  'delete'=>$king->lang->get('system/common/del'),
 );
 
 
 foreach($res as $rs){
$manage="'<a href="manage.content.php?action=edt&listid=".$rs['listid']."kid='+K[0]+'">'+$.kc_icon('k5','".$king->lang->get('system/common/edit')."')+'</a>'";
 $manage.="+'<a class="k_ajax" rel="{CMD:'delete',list:'+K[0]+'}">'+$.kc_icon('l5','".$king->lang->get('system/common/del')."')+'</a>'";
 $manage.="+$.kc_updown(K[0])";

 $_js=array(
  "$.kc_list(K[0],K[1],'manage.content.php?action=edt&listid=".$rs['listid']."&kid='+K[0])",
  $manage,
  "kstyle(K[1],K[2],K[3],K[4])",
  "'<i>'+isset(K[0],K[5])+'</i>'",
 );
 
 $s=$king->openList('','',$_js,$king->db->pagelist('manage.search.php?pid=PID&rn=RN',$king->db->getRows_number('%s__shop')));
 $s.="function kstyle(l1,l2,l3,l4){var I1;l4 ? I1='<font style="font-size:'+l3+'px;color:'+l2+';font-weight:bold;">'+l1+'</font>' : I1='<font style="font-size:'+l3+'px;color:'+l2+';">'+l1+'</font>';return I1;};";
 $s.="function isset(id,is){var I1,ico;is?ico='n1':ico='n2';";
 $s.="I1='<a id="commend_'+id+'" class="k_ajax" rel="{CMD:'commend',is:'+(1-is)+',ID:'commend_'+id+'',kid:'+id+',IS:2}" >'+$.kc_icon(ico)+'</a>';return I1;};";

 $s.='ll(''.$king->lang->get('portal/search/chaxun').'','manage',''.$king->lang->get('portal/search/zuozhe').'','<i>'.$king->lang->get('portal/label/attrib/iscommend').'</i>',1);';
    $s.='ll('.$rs['kid'].',''.$rs['ktitle'].'',0);';
 }
 //结束列表
 $s.=$king->closeList();

 //list($left,$right)=king_inc_list();
 $king->skin->output($king->lang->get('portal/search/result'),$left,$right,$s);


  }


 }else
 {
  echo '日,居然是非法ID';
 }
}

 

 

?>

糊涂 发表于:11-06-12 00:35 沙发 [回复] #Top#
糊涂 人气:42 积分:22 金币:769
其实我想把输出那部分单独放到一个function()里。应该是可以的。呵呵。
batdragon 发表于:11-06-12 06:50 板凳 [回复] #Top#
batdragon 人气:2 积分:13 金币:24
有没有asp的啊,我用的是asp版本的。
气象万千 发表于:11-06-12 08:36 4楼 [回复] #Top#
气象万千 人气:140 积分:902 金币:4255
KC元老
建议精华
糊涂 发表于:11-06-12 09:25 5楼 [回复] #Top#
糊涂 人气:42 积分:22 金币:769
Reply: 沙发
不好意思。没有。对应着修改就行了
wuchunkai 发表于:11-06-12 12:26 6楼 [回复] #Top#
wuchunkai 人气:472 积分:6 金币:19338
VIP KC元老 灌水狂人
我又来测试啦!昨天测试的有点小问题,可能是我的文章在二级目录,搜索结果里的文章链接是总是错误的。不知道这个问题有没有解决?
wuchunkai 发表于:11-06-12 13:22 7楼 [回复] #Top#
wuchunkai 人气:472 积分:6 金币:19338
VIP KC元老 灌水狂人
测试完毕,我的目录结构是:单页下面有两个文章目录,但当我搜索时,同样的标题里面包含了:new 字符却只能搜索出一个结果来,结果的链接虽然正确,可结果却是错误的。
wuchunkai 发表于:11-06-12 13:26 8楼 [回复] #Top#
wuchunkai 人气:472 积分:6 金币:19338
VIP KC元老 灌水狂人
好象文章是在多个不同目录下时,搜索结果肯定是错误的。能不能按模型来搜索,就象前台搜索那样???
wuchunkai 发表于:11-06-12 13:30 9楼 [回复] #Top#
wuchunkai 人气:472 积分:6 金币:19338
VIP KC元老 灌水狂人
前台扫搜索,可以正确的搜索出所有使用相同模型下的数据。楼主试试这个思路?
糊涂 发表于:11-06-12 13:35 10楼 [回复] #Top#
糊涂 人气:42 积分:22 金币:769
嗯我也想到了。值完班试试

12Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号