完成搜索页面
要实现的效果:
显示搜索页面
a 在plus目录中添加sou.php文件,用于加载sou.html文件
b访问之后页面输出的效果如下所示
c 引入每一个dede中的公共文件
d 将模板页面改名字为sou.html然后引入到sou.php文件中
在sou.php中进行引入
引入之后的页面:
e 修改sou.html中的css文件路径和js路径
如果直接使用dede中的标签是不被解析的,因为我们现在直接访问html页面,没有给他生成静态的页面,所以他不能解析dede的标签.
在这里我们直接使用原生的php标签进行引入即可
进行访问查看效果:
dede里面的数据库操作
数据库的初始化操作
默认情况下数据核心类是在include/commen.inc.php文件中引入了数据库核心类文件。
dede默认提供了三种操作数据的核心类
我们默认的数据库操作类是dedesql.class.php文件
找到dedesql.class.php文件
查看dedesql.class.php中是如何实例化和引用相关的数据库类的
有上面可知,我们直接使用$dsql这个实例化的类即可引用
查询操作
查询多条记录的方法
$dsql->Execute(“me”,$sql语句) 类似于$res=mysql_query($sql语句)
注释:me的意思是将sql执行完成之后的结果赋给$me
取出数据的方法:
$dsql->GetArray(“me”);//该方法取出一次数据,游标就会向下移动一次
上面的这个方法的功能就类似于$row=mysql_fetch_assoc($res)
案例:
$sql=”select * from goods”;
$dsql->Execute(“abc”,$sql);
取出数据:
$data=[];
While($row=$dsql->GetArray(“abc”)){
$data[]=$row;
}
取出单行数据的方式:
$dsql->GetOne($sql);//该方法只返回一行数据信息
增删改的操作
如果要想对表中的数据进行增删改操作,并且不需要关注影响记录条数
$dsql->ExecuteNoneQuery($sql语句)
如果想要对表中的数据进行增删改操作,同时也需要关注影响记录条数
$dsql-> ExecuteNoneQuery2($sql语句)
展示出搜索页面的头部
需求:取出搜索页面的导航栏部分.
分析:1 导航栏的数据保存在dede_arctype表中.
2 只需要取出其中的电影模型下面的顶级导航栏.
取出数据
思路就是由于要取出的是栏目顶级导航,所以在查询时候要指定reid=0 并且要确定的就是我们是从dede_arctype表中取得数据信息
打印的数据效果如夏所示:
在sou.html页面中循环输出栏目数据
最终的输出效果如下所示:
多学一招:
这里要拼接处typeurl的地址:在arclist中找到这个标签即可
取出电影数据
页面的效果图如下所示:
分析:
该数据涉及到了附加表中的数据信息(语言、评分值)还有就是内容主表中的电影名称信息以及我们要进行处理的就是电影的对应url地址(arcurl)
取出电影数据
代码如下
多学一招:arcurl的拼接需要在arclib.php中获取:
完成电影数据的遍历
在搜索页面显示年代数据
分析:
1、 首先每一个年代数据都要有一个url地址,
2、 需要有一个是否处于选中状态判断,
3、 同时也要考虑把其他条件参数给带上
4、 由于全部字样也需要考虑是否处于选中状态,所以也要封装到数组中来
思路:可以考虑将这个年代数据给封装成一个数组
$ndData=array(
array(
‘name’=>2016,
‘url’=>用来跳转的url地址 (diqu=欧美& niandai=2016)
‘selected’=>判断是否处于选中状态
),
array(
‘name’=>2015,
‘url’=>用来跳转的url地址(niandai=2015&diqu=欧美)
‘selected’=>判断是否处于选中状态
),
array(
‘name’=>’全部’,
‘url’=>用来跳转的url地址(niandai=2015&diqu=欧美)
‘selected’=>判断是否处于选中状态
)
)
取出年代数据
if($_GET[‘niandai’])
$sel = ”;
else
$sel = ‘class=”all”‘;
$nianData[] = array(
‘name’=>”全部”,
‘url’=>getUrl(),
‘selected’=>$sel
);
$sql = “select distinct niandai from dede_addonmovie”;
$dsql->Execute(‘nian’,$sql);
while($row = $dsql->GetArray(‘nian’)){
if($_GET[‘niandai’]==$row[‘niandai’]){
$sel = ‘class=”all”‘;
}else
$sel = ”;
$nianData[] = array(
‘name’=>$row[‘niandai’],
‘url’=>’?niandai=’.$row[‘niandai’].getUrl(‘niandai’),
‘selected’=>$sel
);
}
url的拼接函数如下所示:
function getUrl($default=”){
$str = ”;
if($default !=’niandai’){
if($_GET[‘niandai’]){
$str .= ‘&niandai=’.$_GET[‘niandai’];
}
}
if($default!=’type’){
if($_GET[‘type’])
$str .= ‘&type=’.$_GET[‘type’];
}
if($default!=’diqu’){
if($_GET[‘diqu’])
$str .= ‘&diqu=’.$_GET[‘diqu’];
}
}
完成年代数据遍历
最终效果
在搜索页面显示地区数据
取出数据的代码
完成地区数据的遍历
在搜索页面显示出类型数据
取出数据的代码
最终的url函数如下所示:
完成类型数据遍历
最终效果:
最终的效果如下所示:
把地址栏里面的条件添加到SQL语句中
最终效果:
把查询的条件显示出来
分析:由于url地址栏中的查询参数信息,在这个位置都要显示出来,那么我们可以在处理查询条件的位置来同步我们的数组(就是用来在页面中遍历查询条件的)
$search=array(
array(
‘name’=>查询条件的名称,
‘url’=>对应url地址
)
);
在拼接SQL语句的位置封装条件数组
$searche = array();
$where = ”;
if($_GET[‘niandai’]){
$where .=”and addf.niandai='{$_GET[‘niandai’]}'”;
$searche[] = array(
‘name’=>$_GET[‘niadai’],
‘url’=>getUrl()
);
}
if($_GET[‘diqu’]){
$where .=”and addf.diqu='{$_GET[‘diqu’]}'”;
$searche[]= array(
‘name’=>$_GET[‘diqu’],
‘url’=>getUrl()
);
}
if($_GET[‘type’]){
$where .=”and cha.typename='{$_GET[‘type’]}'”;
$searche[] =array(
‘name’=>$_GET[‘type’],
‘url’=>getUrl()
);
}
完成条件遍历
最终效果:
实现搜索功能
修改表单
把条件给拼接到SQL语句中
最终效果: