翻译:xoops搜索功能的使用

本文介绍如何在xoops的myguestBook模块中实现搜索功能。主要步骤包括:在xoops_version.php中添加搜索配置;创建search.inc.php文件并实现guestbook_search函数,该函数通过SQL查询从数据库中检索匹配的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://www.xoops.org/modules/mediawiki/index.php?title=Dev:search_function&curid=355&oldid=1067
注意:我是一个新的xoops开发者,请时刻留意这一点
记录一下我开发myguestBook模块时候学到的搜索功能
1. 第一,向xoops_version.php文件加入以下的代码

 Search $modversion['hasSearch'] = 1;
 $modversion['search']['file'] = "include/search.inc.php";
 $modversion['search']['func'] = "guestbook_search";
2.第二,按照以上的设定添加文件,并写代码:

 

=====

翻译者:Surance Yin  (Suranceyin@yahoo.com.cn)

©:http://www.fltek.com.cn

=====

 

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<?php

// 这些代码是从newbb借鉴的

// 函数名是在xoops_version.php里面定义的

// 加入参数 "$queryarray, $andor, $limit, $offset, $userid" 

// 注意: $andor 默认值为 AND, 可以设置为 'AND', 'OR' or 'exact', 取决于高级搜索界面的三个选项。你的搜索逻辑必须考虑以上的三个值


function guestbook_search($queryarray, $andor, $limit, $offset, $userid){

       
       
global $xoopsDB;

       
// 开始构造sql语句
       $sql = "SELECT id,name,title,message,time FROM ".$xoopsDB->prefix("myguestbook")."";

       
// 如果$queryarray不是一个数组,count()函数也会返回1. 因此要使用is_array()检查是否是数组
        
       
if ( is_array($queryarray&& $count = count($queryarray) ) {
               
$sql .= " WHERE ((name LIKE '%$queryarray[0]%' OR title LIKE '%$queryarray[0]%' OR message LIKE
               %
$queryarray[0]%')";
               
for($i=1;$i<$count;$i++){
                       
$sql .= " $andor ";
                       
$sql .= "(name LIKE '%$queryarray[$i]%' OR title LIKE '%$queryarray[$i]%' OR message LIKE
                               '%
$queryarray[$i]%')";
               }
               
$sql .= "";
       } 
// end if

       
$sql .= "ORDER BY id DESC";


       
// 因为Gusetbook的index.php显示了我需要知道的实体
       // 既然用index.php代码

       $query = $xoopsDB->query("SELECT COUNT(*) FROM ".$xoopsDB->prefix("myguestbook")." WHERE id>0");
       
list($numrows= $xoopsDB->fetchrow($query);

       
// 假设sql获取到数据
       $result = $xoopsDB->query($sql,$limit,$offset);
       
$ret = array();
       
$i = 0;
       
// 使用搜索结果创建到query的连接对象
       while($myrow = $xoopsDB->fetchArray($result)){

               
// 你可以用任何图片
               $ret[$i]['image'= "images/url.gif";

               
// 设置结果查看明细的信息
               $ret[$i]['link'= "index.php?start=".($numrows-$myrow['id']);

               
$ret[$i]['title'= $myrow['name'];

               
$ret[$i]['time'= $myrow['time'];

               
// guestbook中,id没有用
               $ret[$i]['uid'= "";
               
$i++;
       }
       
return $ret;

}

// 注意: 象上面声明的一样, $ret 是一个多维数组,这个多维数组的第一维是一个顺序号,第二维是图片、连接、标题、uid和时间。这些属性指向搜索到的一个实体。 image, uid and time 是可选的,time 是一个unix的标准时间戳

// 参见xoops中的 search.php . 路径为: kernel/module.php 调用了各个模块的搜索方法?> 

转载于:https://www.cnblogs.com/xxpyeippx/archive/2008/08/16/1269517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值