帝国CMS的搜索表单语法规则_PHP教程
程序员文章站
2022-06-16 22:20:17
...
帝国CMS提供了比较强大的搜索结果调用,你可以按照帝国cms搜索表单制作语法,制作出满足你需求的大部分搜索功能。如果你在你的数据库中有自定义字段,那么可能需要改一下e/search/index.php对form表单提交的数据处理,可以参考文章最后提供的例子。先来看看搜索表单变量说明:
变量名 | 说明 | 例子 |
搜索表单提交地址 | POST方式:/e/search/index.php | |
GET方式:/e/search/?searchget=1 | /e/search/?searchget=1&keyboard=帝国&show=title | |
keyboard | 搜索关键字变量 | |
show | 搜索字段变量(多个字段用","格开。搜索字段必须是后台模型开启搜索的字段) | |
classid | 搜索栏目ID(不设置为不限,多个栏目可用","格开,设置父栏目会搜索所有子栏目) | |
ztid | 搜索专题ID(不设置为不限,多个专题可用","格开) | |
tbname | 按数据表搜索(需与搜索模板ID结合) | |
tempid | 所用搜索模板ID(一般跟按表搜索结合使用) | |
starttime与endtime | 分别为搜索发布起始时间与结束时间的信息(不填为不限.格式:2008-02-27) |
|
startprice与endprice | 分别为商品价格的起始价格与结束价格(不填为不限) |
|
搜索特殊字段 | id : 按信息ID搜索 keyboard : 按关键字搜索(可实现按tags列出信息) userid : 按发布者用户ID搜索 username : 按发布者用户名搜索 |
|
member | 值为0则不限制 值为1则为只搜索会员投稿的信息 值为2则为只搜索管理员增加的信息 |
|
orderby | 排序字段: 0:按发布日期(默认) 1:按ID 2:按评论数 3:按浏览人气 4:按下载数 |
|
myorder | 排序方式: 0:倒序排列(默认) 1:顺序排列 |
|
andor | 设置多条件查询之间关联关系,有两种: or : 或者的关系(默认) and : 并且的关系 |
|
hh | 逻辑运算联结符变量: LT : 小于 GT : 大于 EQ : 等于 LE : 小于等于 GE : 大于等于 NE : 不等于 IN : 包含(搜索关键字用空格隔开每个值) BT : 范围,两个值之间(搜索关键字用空格隔开两个值) LK : 模糊查询(默认) |
下面是一个例子:
搜索表单多条件并列搜索语法说明
1. 多字段并列搜索:有"字符串"与"数组"两种传递方式
字符串传递为例子:
说明:上面为模糊查询title字段包含"标题"字符或者writer字段包含"作者"的信息
数组传递为例子:
上面为模糊查询title字段包含"标题"字符或者writer字段包含"作者"的信息
2. 多逻辑运算联结符并列搜索
字符串传递为例子:
说明:上面为模糊查询title字段包含"标题"字符或者writer字段等于"作者"的信息
字符串传递为例子:
说明:上面为模糊查询title字段包含"标题"字符或者writer字段等于"作者"的信息。
一个实际例子
表单设计如下:
为了可以加入对自定义字段myarea与mycategory的搜索,我们需要对e/search/index.php进行适当改写:
$keyboard=$_POST['keyboard'].','.$_POST['area'].','.$_POST['category']; // 这是原来的:$keyboard=$_POST['keyboard']; $keyboardone=0; if(is_array($keyboard)) {} elseif(strstr($keyboard,',')) { $keyboard=explode(',',$keyboard); } else { $keyboard=trim($keyboard); $len=strlen($keyboard); if($len$public_r[max_keyboard]) { printerror("MinKeyboard",$getfrom,1); } $keyboardone=1; }
OK,完成。