选择按作者,按标题搜索的实现
刚修改了一下程序,实现了下拉列表选择搜索类型。给我们新手们分享一下(老手勿看)
1、首先要说明的是,最新asp.net 版本中已经可以实现全站搜索。你可能需要修改一下 search模块中的config.jtbc文件,把你要搜索的模块名称加入列表中,把不需要的删除,如:
<item>
<name><![CDATA[nsearch]]></name> <chinese><![CDATA[articles,downloads,myshop]]></chinese> </item>
2、修改搜索表单。我这里因为已经添加了作者字段(author),因此需要“按作者”搜索。修改后的搜索表单如下(灰色部分是新加入的):
<form method="get" action="/search">
<td><input type="text" name="keyword" class="text" size="20" /></td>
<td><select name="Select"><option selected="selected" value="topic">按标题</option><option value="author">按作者</option></select></td>
<td><input type="submit" value="搜索" class="button" /></td>
</form>
3、修改\\search\\common\\codefile\\default.cs文件的 private string Module_List()函数,其中关键几处:
(1)在函数开始处比如string tmpstr = "";行下方增加二行:
string serchtype = "";
serchtype ="un_"+ request.querystring("select"); //定义了一个变量searchtype并取得用户的选择类型值
(2)修改这一行: if (!cls.isEmpty(tdatabase)) tsqlstr += "select " + cls.cfnames(tfpre, "id") + " as un_id," + cls.cfnames(tfpre, "author") + " as un_author," +cls.cfnames(tfpre, "topic") + " as un_topic," + cls.cfnames(tfpre, "time") + " as un_time,'" + tnGenreAryString + "' as un_genre from " + tdatabase + " where " + cls.cfnames(tfpre, "hidden") + "=0 and " + cls.cfnames(tfpre, "lng") + "=" + cls.getNum(config.nlng, 0) + " union all ";注意其中红色部分是新加入的字段名。
(3)修改此行: tsqlstr +=") t0 where un_topic like '%" + tkeyword + "%'";
改为: tsqlstr +=") t0 where "+serchtype+" like '%" + tkeyword + "%'";//把查询条件变量转入字符串中。
4、OK了。
|