ECMS:多条件搜索

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一级 | 帝国CMS | 首页 | DedeCMS | Drupal | PHPCMS | PHP168 | Xoops | Joomla | PowerEasy | SupeSite

今天我们就专门来讲解4.7的搜索改进

回顾下4.6的搜索语法:

一.提交地址

   1.表单提交地址:/e/search/index.php

   2.GET方式转到搜索处理文件地址:/search/keyword

二.参数说明:

   keyboard:搜索关键字
   show:搜索字段(多个字段用","格开。搜索字段必须是后台模型开启搜索的字段)
   classid:搜索栏目id(不填为不限)
   tbname:按表搜索(一般不加)
   tempid:所用搜索模板(如果不是按表搜索,请不加此参数)
   starttime,endtime:分别为搜索的起始时间与结束时间(不填为不限.格式:2006-10-01)
   startprice,endprice:分别为商品价格的起始价格与结束价格(不填为不限)
   orderby:排序字段:0:按发布日期(默认)
                      1:按ID
                      2:按评论数
                      3:按浏览人气
                      4:按下载数
   myorder:排序方式:0:倒序排列(默认)
                      1:顺序排列

三.例子

  1.搜索表单:
------------------------------------------------------------------
<form name=search method=post action=/e/search/index.php>
关键字:<input name="keyboard" type="text" size="10"><br>
范围:<select name="show">
               <option value="title">标题</option>
               <option value="smalltext">简介</option>
               <option value="newstext">内容</option>
               <option value="writer">作者</option>
               <option value="title,smalltext,newstext,writer">搜索全部</option>
             </select><br>
  栏 目:<select name="classid">
                  <option value="0">搜索全部</option>
                  <option value="1">新闻中心</option>
                  <option value="4">技术文档</option>
                  <option value="22">下载中心</option>
                 </select>
  <br><input type="submit" name="submit" value="搜索">
 </form>
------------------------------------------------------------------

  2.GET方式转到搜索处理文件
  /search/keyword?keyboard=帝国&show=title

相对于4.6,4.7版有什么改进呢?下面我们一一说明

一、支持多栏目同时搜索:

搜索多个栏目用逗号格开即可
例子:下面为搜索id=1,id=2,id=3三个栏目的信息:
<input type="hidden" name="classid" value="1,2,3">

二、支持专题搜索:

搜索专题变量名:ztid
搜索多个专题可以用逗号格开,同上面的多栏目搜索
例子:下面为搜索专题ID=1的信息
<input type="hidden" name="ztid" value="1">

三、支持各种逻辑运算联结符:

逻辑运算联结符变量名:hh
LT : 小于
GT : 大于
EQ : 等于
LE : 小于等于
GE : 大于等于
NE : 不等于
IN : 包含(搜索关键字用空格隔开每个值)
BT : 范围,两个值之间(搜索关键字用空格隔开两个值)
LK : 模糊查询(默认)

例子:
模糊查询:<input type="hidden" name="hh" value="LK">

四、支持设置多条件查询之间关联关系

关联关系变量名为:andor
有两种关联关系:
or : 或者的关系(默认)
and : 并且的关系

例子:
<input type="hidden" name="andor" value="and">

五、支持多字段、多逻辑运算联结符并列搜索

(一)、多字段并列搜索:有“字符串”与“数组”两种传递方式

  1. 字符串传递为例子:
    <input type="hidden" name="hh" value="LK">
    <input type="hidden" name="show" value="title,writer">
    <input type="hidden" name="keyboard" value="标题,作者">
    (说明:上面为模糊查询title字段包含“标题”字符或者writer字段包含“作者”的信息)
  2. 数组传递为例子:
    <input type="hidden" name="hh" value="LK">
    <input type="hidden" name="show[]" value="title">
    <input type="hidden" name="keyboard[]" value="标题">
    <input type="hidden" name="show[]" value="writer">
    <input type="hidden" name="keyboard[]" value="作者">
    (说明:上面为模糊查询title字段包含“标题”字符或者writer字段包含“作者”的信息)

(二)、多逻辑运算联结符并列搜索

  1. 字符串传递为例子:
    <input type="hidden" name="hh" value="LK,EQ">
    <input type="hidden" name="show" value="title,writer">
    <input type="hidden" name="keyboard" value="标题,作者">
    (说明:上面为模糊查询title字段包含“标题”字符或者writer字段等于“作者”的信息)
  2. 字符串传递为例子:
    <input type="hidden" name="show[]" value="title">
    <input type="hidden" name="hh[]" value="LK">
    <input type="hidden" name="keyboard[]" value="标题">
    <input type="hidden" name="show[]" value="writer">
    <input type="hidden" name="hh[]" value="EQ">
    <input type="hidden" name="keyboard[]" value="作者">
    (说明:上面为模糊查询title字段包含“标题”字符或者writer字段等于“作者”的信息)

六、新增特殊字段查询

特殊字段包括:
id : 按信息id搜索
keyboard : 按关键字搜索,可实现按tags列出信息效果
userid : 按用户ID搜索
username : 按用户名搜索

新增member变量:可设置只搜索会员投稿或者管理员增加的信息。

值为0则不限制
值为1则为只搜索会员投稿的信息

值为2则为只搜索管理员增加的信息

例子:只搜索会员投稿的信息
<input type="hidden" name="member" value="1">

七、新增新的GET提交方式

可以将数据直接提交至e/search/index.php,而不需要4.6的/search/keyword中转。
只要在参数中加上“searchget”变量就可以了,如:/e/search/?searchget=1&keyboard=帝国&show=title

应用例子:实现按标题、作者、录入者与信息ID同时搜索的表单

Moresearch1.gif


Moresearch2.gif

上面例子的表单html代码:

<form name="searchform" method="post" action="/e/search/index.php">
  <table width="550" border="0" align="center" cellpadding="3" cellspacing="1" class="tableborder">
    <input type="hidden" name="tbname" value="news">
    <input type="hidden" name="tempid" value="1">
    <b><input type="hidden" name="andor" value="and"></b>
    <tr class="header"> 
      <td colspan="2">新闻搜索</td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td width="97">标题:</td>
      <td width="388"> 
        <b>   <input type="hidden" name="show[]" value="title">
          <input type="hidden" name="hh[]" value="LK">
          <input name="keyboard[]" type="text"></b>
          </td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td>作者:</td>
      <td> 
        <b>   <input type="hidden" name="show[]" value="writer">
          <input type="hidden" name="hh[]" value="LK">
          <input name="keyboard[]" type="text"></b>
          </td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td>录入者:</td>
      <td> 
        <b>   <input type="hidden" name="show[]" value="username">
          <input type="hidden" name="hh[]" value="EQ">
          <input name="keyboard[]" type="text"></b>
          </td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td>信息ID范围:</td>
      <td> 
        <b>   <input type="hidden" name="show[]" value="id">
          <input type="hidden" name="hh[]" value="BT">
          <input name="keyboard[]" type="text"></b>
        <font color="#666666">(例:“1 6”表示1到6之间) </font></td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td> </td>
      <td> 
        <input type="submit" name="Submit" value="马上搜索">
        <font color="#666666">(不设置为不限)</font></td>
    </tr>
  </table>
</form>

提示:您可以先修改部分代码再运行

新版搜索功能支持各种字段、运算组合搜索,更多应用期待您去实践,至此本节讲解完毕。