程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 帝國CMS的搜索表單語法規則

帝國CMS的搜索表單語法規則

編輯:關於PHP編程

帝國CMS提供了比較強大的搜索結果調用,你可以按照帝國cms搜索表單制作語法,制作出滿足你需求的大部分搜索功能。如果你在你的數據庫中有自定義字段,那麼可能需要改一下e/search/index.php對form表單提交的數據處理,可以參考文章最後提供的例子。先來看看搜索表單變量說明:

變量名 說明 例子 搜索表單提交地址 POST方式:/e/search/index.php <form name="searchform" method="post" action="/e/search/index.php"> GET方式:/e/search/?searchget=1 /e/search/?searchget=1&keyboard=帝國&show=title keyboard 搜索關鍵字變量 <input name="keyboard" type="text"> show 搜索字段變量(多個字段用","格開。搜索字段必須是後台模型開啟搜索的字段) <input type="hidden" name="show" value="title,newstext"> classid 搜索欄目ID(不設置為不限,多個欄目可用","格開,設置父欄目會搜索所有子欄目) <input type="hidden" name="classid" value="1"> ztid 搜索專題ID(不設置為不限,多個專題可用","格開) <input type="hidden" name="ztid" value="1"> tbname 按數據表搜索(需與搜索模板ID結合) <input type="hidden" name="tbname" value="news"> tempid 所用搜索模板ID(一般跟按表搜索結合使用) <input type="hidden" name="tempid" value="1"> starttime與endtime 分別為搜索發布起始時間與結束時間的信息(不填為不限.格式:2008-02-27) <input name="starttime" type="text" value="0000-00-00" size="12">
<input name="endtime" type="text" value="0000-00-00" size="12"> startprice與endprice 分別為商品價格的起始價格與結束價格(不填為不限) <input name="startprice" type="text" value="0" size="6">
<input name="endprice" type="text" value="0" size="6"> 搜索特殊字段 id : 按信息ID搜索
keyboard : 按關鍵字搜索(可實現按tags列出信息)
userid : 按發布者用戶ID搜索
username : 按發布者用戶名搜索 <input type="hidden" name="show" value="keyboard"> member 值為0則不限制
值為1則為只搜索會員投稿的信息
值為2則為只搜索管理員增加的信息 <input type="hidden" name="member" value="1"> orderby 排序字段:
0:按發布日期(默認)
1:按ID
2:按評論數
3:按浏覽人氣
4:按下載數 <input type="hidden" name="orderby" value="1"> myorder 排序方式:
0:倒序排列(默認)
1:順序排列 <input type="hidden" name="myorder" value="1"> andor 設置多條件查詢之間關聯關系,有兩種:
or : 或者的關系(默認)
and : 並且的關系 <input type="hidden" name="andor" value="and"> hh 邏輯運算聯結符變量:
LT : 小於
GT : 大於
EQ : 等於
LE : 小於等於
GE : 大於等於
NE : 不等於
IN : 包含(搜索關鍵字用空格隔開每個值)
BT : 范圍,兩個值之間(搜索關鍵字用空格隔開兩個值)
LK : 模糊查詢(默認) <input type="hidden" name="hh" value="LK">

下面是一個例子:

<table width="320" border="0" cellspacing="1" cellpadding="3">
<form name="searchform" method="post" action="/e/search/index.php">
<tr>
   <td>關鍵字:<input name="keyboard" type="text" size="10"></td>
   <td>范圍:
      <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></td>
</tr>
<tr>
   <td>欄 目:
      <select name="classid">
      <option value="0">搜索全部</option>
      <option value="1">新聞中心</option>
      <option value="4">技術文檔</option>
      <option value="22">下載中心</option>
       </select> </td>
   <td><input type="submit" name="submit" value="搜索"></td>
</tr>
</form>
</table>

搜索表單多條件並列搜索語法說明

1. 多字段並列搜索:有"字符串"與"數組"兩種傳遞方式

字符串傳遞為例子:

<input type="hidden" name="hh" value="LK">
<input type="hidden" name="show" value="title,writer">
<input type="hidden" name="keyboard" value="標題,作者">

說明:上面為模糊查詢title字段包含"標題"字符或者writer字段包含"作者"的信息

數組傳遞為例子:

<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字段包含"作者"的信息

2. 多邏輯運算聯結符並列搜索

字符串傳遞為例子:

<input type="hidden" name="hh" value="LK,EQ">
<input type="hidden" name="show" value="title,writer">
<input type="hidden" name="keyboard" value="標題,作者">

說明:上面為模糊查詢title字段包含"標題"字符或者writer字段等於"作者"的信息

字符串傳遞為例子:

<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字段等於"作者"的信息。

一個實際例子

表單設計如下:

						<form action="[!--news.url--]e/search/index.php" method="post" name="searchform" id="searchform">
						<select name="classid" id="" >
							<option value="59,60,78,79,80,81" selected>全部</option>
						</select>
						<input type="hidden" name="show" value="title,myarea,mycategory,smalltext" />
						<input type="hidden" name="tempid" value="1" />
						<table width="100%" cellspacing="0" cellpadding="0" border="0">
							<tbody>
								<tr class="even">
									<td >地區:
								<select name="area" id="">
									<option value="">不限</option>
									<option value="香洲">香洲</option>
									<option value="吉大">吉大</option>
									<option value="拱北">拱北</option>
									<option value="新香洲">新香洲</option>
									<option value="前山">前山</option>
									<option value="南屏">南屏</option>
									<option value="金灣">金灣</option>
									<option value="斗門">斗門</option>
								</select>
								
								  房型:
								<select name="category" id="">
									<option value="">不限</option>
									<option value="58_0">一房</option>
									<option value="58_1">二房</option>
									<option value="58_2">三房以上</option>
									<option value="58_3">公寓</option>
									<option value="58_4">寫字樓</option>
									<option value="58_5">商鋪</option>
									<option value="58_6">廠房</option>
								</select>
									</td>
									<td> </td>
								</tr>
								<tr class="even">
									<td >時間范圍: <input name="starttime" type="text" value="2008-08-08" size="12" onclick="calendar.show(this);" /> 到 <input type="text" id="todayButton" name="todayButton" value="" size="12" onclick="calendar.show(this);" /> (不選則不限時段)</td>
									<td> </td>
								</tr>
								<tr class="even">
									<td ><input name="keyboard" type="text" size="32" value="" id="keyboard" class="inputText" />   <input type="submit" name="Submit22" value=" 搜 索 " /></td>
									<td></td>
								</tr>
							</tbody>
						</table>
						</form>

為了可以加入對自定義字段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[min_keyboard]||$len>$public_r[max_keyboard])
	{
		printerror("MinKeyboard",$getfrom,1);
	}
	$keyboardone=1;
}

OK,完成。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved