• SpeedPHP 学习教程第五篇——实战留言本之查看和分页(原创连载六)


    所有的实例教程,我将把每一个部分知识点进行相关性完整连贯讲解,这样大家就不会出现不连贯,不完整的现象,如果大 家觉得有什么问题,及时更贴呀~

    我也会及时调整的,本教程假设你已经有相关的基础的朋友。
    现在大家能够继续坚持,现在已经是speedphp教程的第五篇了,感谢大家的一些支持,更多请移步安徽php社 区:http://bbs.hfphp.org

    首先,我们来看代码,然后我们一个一个知识点来讲解:

    代码
            //首页显示
    function index(){
    $posturl = spUrl('main','write');    //spUrl组合URL,已经说过了
    //这里没有用模板,直接echo,如果有需要,我会根据大家的要求将教程补上。

    echo "<p align=center><h2>sp留言板</h2></p>";
    echo "<p>请写下你的留言</p><form action={$posturl} method=POST>";
    echo "<P>您的名字:<input type=text name=name></P>";
    echo "<p>留言标题:<input type=text name=title></p>";
    echo "<p>留言内容:<textarea name=contents></textarea></p>";
    echo "<p><input type=submit value=提交></p></form>";
                
    $guestbook = spClass("guestbook");  //初始化数据表对象,如果要使用后面的findAll和find,create等都是必须的
    // if ($result = $guestbook->findAll()){

     $result = $guestbook->spPager($this->spArgs('page',1),5)->findAll();     //第一个知识点:分页
    $page = $guestbook->spPager()->getPager();                      //第一个知识点:分页2          

    foreach($result as $value){
    $contentsurl = spUrl('main','show',array('id'=>$value['id']));        //又见spUrl,显示留言和回复,会产生index.php?c=main&a=show&id=xxx的
    $contentdel = spUrl('main','del',array('id'=>$value['id']));     //删除url构造
    $contentbj = spUrl('main','bianji',array('id'=>$value['id']));    // 编辑url构造
    echo "<p><input type='button' value='删除' onclick=javascript:location.href='{$contentdel}'>";
    echo "<input type='button' value=' 编辑' onclick=javascript:location.href='$contentbj'>";
    echo "里是第{$value['id']}条留言:";
     
    //这里显示标题,名字,都是echo,大家应该比较熟悉
    echo "<a href={$contentsurl} target=blank>{$value['title']}</a>&nbsp;&nbsp;{$value['name']}</p>";
    }  
    //开始分页部分了
    .............
    //下面讲解         
            }

    大家可能看花眼了吧,也可能比较迷糊,原创http://bbs.hfphp.org
    上面是index动作,即在首页显示所有的留言,就是一些echo,没有什么可说的,
    其实查看很简单,通过下面的 $contenturl产生的地址,我们跳转到查看页面,就OK了,相信有php基础的都能看懂。
    echo "<a href={$contentsurl} target=blank>{$value['title']}</a>  {$value['name']}</p>";
    查看留言的内容也很简单,直接贴代码了,

    代码
            //查看留言内容
            function show(){
                
    $posturl = spUrl('main','reply');   //这里是构造回复的地址index.php?c=main&a=reply
                $id = $this->spArgs("id");      //获取id的get产生,spArgs可以获取到get/post等数据。
                $guestbook =spClass("guestbook");      
                
    $condition = array('id'=>$id);   //制造查找条件,这个是查找留言
                $conarr = array('firstid'=>$id);  ////制造查找条件,这个是查找留言对应的回复
                $result = $guestbook->find($condition);      //查找留言            第二个知识点1
                $resarr = $guestbook->findAll($conarr);      //查找所有的回复          第二个知识点2
                //print_r($resarr);die;
                //留言查看

                echo "<p>1留言标题:{$result['title']}</p>";
                
    echo "<p>留言者:{$result['name']}</p>";
                
    echo "<p>留言内容:{$result['contents']}</p><br />";
                
    //回复查看
                foreach($resarr as $value){
                    
    echo "<p>回复标题:{$value['title']}</p>";
                    
    echo "<p>回复者:{$value['name']}</p>";
                    
    echo "<p>回复内容:{$value['contents']}</p>";
                }
                
    //回复表单
                echo "<form action=$posturl method='post'>";
                
    echo "<p>回复标题:<input type='text' name='title'><input type='hidden' name=firstid value={$result['id']}></p>";
                
    echo "<p>回复者:<input name='name'></p>";
                
    echo "<p>回复内容:<textarea name='contents'></textarea>";
                
    echo "<input type='submit' value='提交'></form>";
            }

    第二个知识点:find和findAll,及findSql
    先讲find和findAll主要是下面的分页需要原创http://bbs.hfphp.org

    find —— 从数据表中查找一条记录
    用法:find($conditions = null, $sort = null, $fields = null)

    $conditions, 数组形式,查找条件,数组的键是数据表中的字段名,键对应的值是该字段的条件。

    比如要在留言本中查找到名为“小李”留言者的第一条留言,那 么$conditions条件则应该是:

    $conditions = array( // PHP数组

    'name' => '小李', // 键name是数据表中的字段,小李是我们要查找的数据

    );

    *$sort,字 符串,指定结果排序方向

    *$fields,字符串,特殊指定返回的字段



    在find,findAll,findSQL等多个查找函数以及update,delete等函数中出现的参 数$conditions,除了可以是数组格式外,还可以是字符串的形式,而字符串形式的$conditions就如同SQL语句中的WHERE后面的条 件字符串一样的使用。
    如:原创http://bbs.hfphp.org
    $conditions = array('name'=>'小李');
    就等同于
    $conditions = " 'name' = '小李' ";
    代码
     首先需要准备查找条件  
    $conditions = array'name' => '小李' );  
    $gb = spClass('gb'); // 初始化留言本模型类  
    $result = $gb->find($conditions); // 查找  
    dump($result); // 查看结果,
    echo $result['contents']; // 直接输出结果中的留言内容,对应字段contents  

    findAll —— 从数据表中查找多条记录

    findAll与find的区别在于findAll是返回全部符合条件的记录,而find仅是返回findAll结果的第一条记录。
    用法:findAll($conditions = null, $sort = null, $fields = null, $limit = null)
    参数:原创http://bbs.hfphp.org
    $conditions,数组形式,查找条件,同find的$conditions
    *$sort,字符串,指定结果排序方向
    *$fields,字符串,特殊指定返回的字段
    *$limit,字符串,返回结果数量限制示例:

    代码
    // 还是需要查找小李的留言,不过这次是查找他的全部的留言。  
    // 首先需要准备查找条件  

    $conditions = array'name' => '小李' ); // 条件是同样的  
    $gb = spClass('gb'); // 初始化留言本模型类  
    $result = $gb->findAll($conditions); // 使用了findAll  
    dump($result); // 查看结果,   

    findSql —— 使用SQL语句进行查找操作,等于进行find,findAll等操作
    原创http://bbs.hfphp.org
    用法:findSql($sql)
    参数:$sql,字符串,需要进行查找的SQL语句

    代码
    // 这里我们将对留言本分析一下,归纳一下留言者名单以及各个留言者的留言总数。  
     // 首先准备SQL语句  

    $sql = "SELECT name, count(name) as gbsum FROM spgb_gb WHERE 1 GROUP BY name";  
     
    $gb = spClass('gb'); // 初始化留言本模型类  
     $result = $gb->findSql($sql); // 执行查找  
    dump($result); // 输出结果   

    他主要用于执行sql的查询语句,因为在实际应用过程中,可能find和findAll并不能满足需要的
    其实,还有很多类似的,我们会在以后补充中讲解,或者大家可以下载手册直接看。。。。


    第一个知识点:分页
    SpeedPHP中的分页函数非常容易使用,几乎就是在 普通数据库操作findAll的基础上加入一行代码即可获取 到分页

    代码
    $guestbook = spClass("guestbook");  //初始化数据表对象,如果要使用后面的findAll和find,create等都是必须的

     
    $result = $guestbook->spPager($this->spArgs('page',1),5)->findAll();    //就下面的两行比较重要。
    $page = $guestbook->spPager()->getPager();                      

    spPager是分页程序,第一个参数是页码,也就是第几页,这里我们 用$this->spArgs('page', 1)来获取传过来的page,后面的1是如果在page没有值的时候,默认返回1。第二个参数是分页大小,也就是每页显示几条记录,这里设置是每页显示5 条记录。

    $this->pager = $guestbook->spPager()->getPager();
    在使用了spPager来进行findAll后,就可以使用getPager()方法来获取分页数据。分页数据的格式是:(他是一个数组)

    完整请移步安徽php社区:http://bbs.hfphp.org/thread-59-1-1.html

     原创http://bbs.hfphp.org,转载请说明出处,写写。。。。

  • 相关阅读:
    【分享】你敢来挑战?程序员等级
    [css]我要用css画幅画(二)
    [css]我要用css画幅画(一)
    关于学习javascript的一些建议
    孩子们眼中的世界
    全职妈妈再就业辅助计划
    程序员如何打扫卫生并向老婆汇报
    《夏洛特烦恼》观后感
    软件开发之: 做“工程”还是做“艺术品”
    2014年年度总结
  • 原文地址:https://www.cnblogs.com/jincon/p/1767179.html
Copyright © 2020-2023  润新知