列表页会有分页,控制器下写好代码, 视图层调用
//分页开始
$msg_every_page=10; // 每页显示的信息条数
$total = $this->basicmodel->count('dbname',"where" ); //获取该类信息的总条数
$page_number = ceil($total/$msg_every_page); //天花板函数向上取整,求出页数。例如:总计31条,每页10条,3.1向上取整即为4页
//该栏目下新闻条数$total
$pagehtml = '';
$this->load->library("page");
$classPage = new Page();
$page = intval($this->input->get('page',true));
$page = $page>0 ? $page :1 ;
$pagehtml = $classPage->output($page_number,$page);
//分页结束
视图成调用:
<div style="border: medium none;" class="page clearfix">
<div class="page-r">
if(isset($pagehtml)) {echo "$pagehtml";} ?>
div>
div>
这里判断了一下$pagehtml 是否被定义。
根据模型处理字段,一个小网站也会有很多的栏目比如管理规定,财商论道,校友风采,活动预告~~~巴拉巴拉等等。
最初不懂做,每个栏目加一个方法,加一个页面叫什么rule mate 每个列表 每个详情都要重新写。
对,是我不懂方法。
在写完一遍又一遍之后,感受到了~
根绝模型ID 分类
文章,单页,师资,活动,校友
这样关键词就减少到了只剩 news page teacher activity student
外加一个detail 所有的详情都写进去就行了
从链接上看 localhost/控制器/方法名/catid/id 按照这个稳定的方法 去写页面
控制器就一个,这个是固定的,方法名news page teacher activity student detail 思路清晰。
具体的操作方法,就是读取数据库内的moduleid (数字12345)将数字转换成方法。一个数组就行了
$module = array(1=>"news",2=>"page",3=>"teacher",4=>"student",5=>"activity",6=>"download");
还有的就是,重复的部分,直接变成抄走写成一个个文件 比如 header.php footer.php commonfile.php 然后在页面内include就OK 修改时,也方便修改,而不是一个个页面去修改。
写点具体函数
1 全局可访问的一些变量,例如catid fragment
在class内 写入 protected catid;其他地方访问方式为 this->catid 这个是栏目ID的做法
还有一些碎片管理的问题。
$fragarr = $this->basicmodel->getall('dbname','','catid , content','catid asc'); //查询数据库获得一个二维数组
foreach($fragarr as $fra)
{ //将catid作为碎片数组的下表,全局通过catid可直接访问
$this->fragment[$fra['catid']] = $fra['content'];
}
在foreach下,把二维数组循环成一个一维数组, 键做成catid的值,值选用content的值。
这样全局访问$fragment[7] 就直接出来,catid=7的碎片内容
起初的写法是
this->fragment = array {fra['catid'] =>$fra[‘content’] }
结果就是只能出来一行,后来被指导,这个句子意思是对一个数组初始化,所以最后的结果就是最后一次初始化的结果,每次都覆盖了上次的值。
2 面包屑导航
完成的功能就是 【首页>A栏目> A栏目的子栏目】在每个页面都先试一下,然后带链接可点,点击A栏目,默认链接是A栏目的第一个子栏目。
<div class="page-tit">
<a href="/" title="首页">首页a> foreach($this->catids as $cid){
if($cid != 0){
$cat = $this->basicmodel->getone('mba_category_info', "catid = ".$cid ,'catid , moduleid , title , parentid');
?> <span>>span>
if($cat['parentid'] == 0)
{
$sec_cat = $this->basicmodel->getone('mba_category_info', "parentid = ".$cat['catid'],'*' );
?> <a href="/web/=$module[$sec_cat['moduleid']]?>/=$sec_cat['catid']?>.html"title="=$cat['title']?>">=$cat['title']?>a>
} else {?>
<a href="/web/=$module[$cat['moduleid']]?>/=$cat['catid']?>.html"title="=$cat['title']?>">=$cat['title']?>a>
}?>
} }
?>
div>
如果该栏目为顶级栏目(parentid == 0),就查询该栏目下的子栏目
如果该栏目为子栏目(parentid !=0),输出自己
3网站地图的做法
<ul class="map-page">
foreach($topcategory as $val ) {?>
<li>
<h3>=$val['title']?>h3>
<p class="clearfix">
$sec_cat = $this->basicmodel->getlist('DBname',"parentid =".$val['catid'] ,'*','orderby desc');?>
foreach($sec_cat as $sec) {?>
<a href="/web/= $module[ $sec['moduleid']]?>/=$sec['catid']?>.html">=$sec['title']?>a>
}?>
p>
li>
}?>
ul>
整个的思路就是 先在控制器里查询到顶级栏目,再在视图层把查询到的顶级栏目再循环一次。
2个foreach嵌套,就可以打印出来整个网站的所有栏目了~这里也用到了moduleid对应的数组。
4 js传值 (get方式)
<form class="head-rr" >
<input type="text" class="search" id ="key"/>
<input type="text" class="search-btn" onclick="search()"/>
<script type="text/javascript" src="jquery.js">script>
<script type="text/javascript">
function search()
{
var key = $('#key').val(); //获取text值
window.location.href="/web/search?keyword="+key+"&dbkind=1"; //JS连接语句用+ php用.
}
script>
form>
这个是做一个网站的搜索功能。在按钮上添加一个时间onclick = search() 意思就是在点击的时候触发search()函数。由于整个页面是在HTML标签里的,都要用
<script>script>
这对标签给框起来.
网站内搜索的话,只是做一个标题的模糊搜索,这个用到SQL的like 还有%,where条件写成”title LIKE ‘%$keyword%’” 就OK了
5分页
//分页开始
$msg_every_page=10;
$total = $result_num;
$page_number = ceil($total/$msg_every_page);
//该栏目下新闻条数$total
$pagehtml = '';
$this->load->library("page");
$classPage = new Page();
$page = intval($this->input->get('page',true));
$page = $page>0 ? $page :1 ;
$pagehtml = $classPage->output($page_number,$page);
//分页结束
暂时写到这儿吧- - 感觉做完之后都不是太难了~~~