基于CI框架 MVC模式下 的初次网站搭建

列表页会有分页,控制器下写好代码, 视图层调用

            //分页开始
            $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//.html"title=">">=$cat['title']?>a>  
                } else {?>
            <a href="/web//.html"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//.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);
            //分页结束

暂时写到这儿吧- - 感觉做完之后都不是太难了~~~

你可能感兴趣的:(菜鸟学习)