为了简单的说明的问题,这里数据库只用了核心字段,项目是在TP框架下完成的:
门票表:wq_myticket
核心字段:
id:门票id
reid:门票所属栏目的id
days:行程天数
types:旅游项目类型
访问类似这种:
http://dianzipiao.com/index.php/List/index/days/2表示取得旅游日程为2的所有门票列表
列表页面控制器:
ListAction.class.php(获取栏目下的门票相对麻烦,这里为了简化问题,去掉了栏目属性,只通过旅游日程和类型进行筛选)
<?php
//处理path_info路径
$path_info=$_SERVER['PATH_INFO']; //获取path_info字符串,结果形如:/List/index/id/1
$this->assign('basehost',"http://".$_SERVER['SERVER_NAME']);
//获取网站路径方便在模板中拼接url路径,结果形如:
http://dianzipiao.com/index.php//获取项目类型路径url
$regexp='/\/types\/([a-z]+)/'; //如果url中有/types/huaxue这种形式,就将/types/huaxue去掉,这里使用正则将/types/huaxue替换成空字符串''
!isset($_GET['types']) ? $this->assign('cur_types','0'):$this->assign('cur_types',$_GET['types']);
//这里判断types参数是有设置,如果没有,就将cur_types赋为0,否则就赋为$_GET['types']
$this->assign('types_url',preg_replace($regexp,'',$path_info)); //这里使用正则将/types/huaxue替换成空字符串'',方便在模板中拼接url
//获取旅游日程路径url,这里和处理项目类型路径url同理
$regexp='/\/days\/([\d]+)/';
!isset($_GET['days']) ? $this->assign('cur_days',0):$this->assign('cur_days',$_GET['days']);
$this->assign('days_url',preg_replace($regexp,'',$path_info));
//然后就是拼接sql查询语句:
$where="where 1 ";
$days=$_GET['days'];
$types=$_GET['types'];
if(is_numeric($days) && $days>0){
$where.="and days=$days ";
}
if(!empty($types)){
$where.="and types='$types' ";
}
$model=new Model();//创建数据库操作模型
$result=$model->query("select * from wq_ticket $where");
$this->assign('result',$result); //门票结果列表,注入模板变量
$this->display("Public:list_ticket"); //载入模板list_ticket.html
?>
模板list_ticket.html:
<div class="item_list">
<div class="item_list_left">旅游日程</div>
<div class="item_list_right">
<a href="{$basehost}/index.php{$days_url}/days/0" <if condition="$cur_days eq '0'">class="hover"</if>>全部</a>
<a href="{$basehost}/index.php{$days_url}/days/1" <if condition="$cur_days eq '1'">class="hover"</if>>1日游</a>
<a href="{$basehost}/index.php{$days_url}/days/2" <if condition="$cur_days eq '2'">class="hover"</if>>2日游</a>
<a href="{$basehost}/index.php{$days_url}/days/3" <if condition="$cur_days eq '3'">class="hover"</if>>3日游</a>
<a href="{$basehost}/index.php{$days_url}/days/4" <if condition="$cur_days eq '4'">class="hover"</if>>4日游</a>
<a href="{$basehost}/index.php{$days_url}/days/5" <if condition="$cur_days eq '5'">class="hover"</if>>5日游</a>
<a href="{$basehost}/index.php{$days_url}/days/6" <if condition="$cur_days eq '6'">class="hover"</if>>6日游</a>
</div>
</div>
<div class="item_list">
<div class="item_list_left">旅游项目</div>
<div class="item_list_right">
<a href="{$basehost}/index.php{$types_url}/types/0" <if condition="$cur_types eq '0'">class="hover"</if>>全部</a>
<a href="{$basehost}/index.php{$types_url}/types/huaxue" <if condition="$cur_types eq 'huaxue'">class="hover"</if>>滑雪</a>
<a href="{$basehost}/index.php{$types_url}/types/wenquan" <if condition="$cur_types eq 'wenquan'">class="hover"</if>>温泉</a>
<a href="{$basehost}/index.php{$types_url}/types/piaoliu" <if condition="$cur_types eq 'piaoliu'">class="hover"</if>>漂流</a>
<a href="{$basehost}/index.php{$types_url}/types/buyu" <if condition="$cur_types eq 'buyu'">class="hover"</if>>捕鱼</a>
<a href="{$basehost}/index.php{$types_url}/types/shaokao" <if condition="$cur_types eq 'shaokao'">class="hover"</if>>烧烤</a>
<a href="{$basehost}/index.php{$types_url}/types/cs" <if condition="$cur_types eq 'cs'">class="hover"</if>>CS野战</a>
<a href="{$basehost}/index.php{$types_url}/types/kuaiting" <if condition="$cur_types eq 'kuaiting'">class="hover"</if>>快艇</a>
<a href="{$basehost}/index.php{$types_url}/types/luying" <if condition="$cur_types eq 'luying'">class="hover"</if>>露营</a>
<a href="{$basehost}/index.php{$types_url}/types/meishi" <if condition="$cur_types eq 'meishi'">class="hover"</if>>美食</a>
<a href="{$basehost}/index.php{$types_url}/types/youlechang" <if condition="$cur_types eq 'youlechang'">class="hover"</if>>游乐场</a>
</div>
</div>
循环展示门票列表
<volist name="result" id="vo">
<dl>
<dd class="title"><a href="__APP__/Article/ticket/id/{$vo.id}" title="{$vo.title}">{$vo.title|msubstr=0,14}</a></dd>
</dl>
</volist>