zoukankan      html  css  js  c++  java
  • SpeedPHP 学习教程第六篇——实战留言本之编删和回复(原创连载七)

    我们已经学过留言板的增加,和查看,下面我们讲到留言板的编辑和删除,已经查看时的回复部分
    原版,请移步安徽php社区http://bbs.hfphp.org/viewthread.php?tid=82
    编辑:
    在index的动作中,我们使用了spUrl构造了一个编辑的跳转地址
    $contentbj = spUrl('main','bianji',array('id'=>$value['id']));
    然后在,下面echo出了编辑的按钮,他有一个onclick事件,当点击时候会跳转到编辑表单
    通过上面的构造函数,我们可以知道,编辑会跳转到 index.php?c=main&a=bianji&id=xxxx
    <input type='button' value=' 编辑' onclick=javascript:location.href='$contentbj'>

    编辑的动作代码如下:
    代码
    //编辑
    function bianji(){
        $id = $this->spArgs("id");  //获取id的参数,类似于$id = $_GET['id']
        $condition = array('id' =>$id);      //组合id数组,用于下面的find查询
        $guestbook = spClass("guestbook");    //.....
        $update = spUrl("main","update");     //构造编辑时的更新跳转地址
        $result = $guestbook->find($condition);   //查询当前参数id的记录
        
        //dump($result);    //可以调试看看
            //只是一些echo表单
        echo "
    <form action={$update} method=post>";
        echo "
    <input type='hidden' name=id value='{$result[id]}'>";
        echo "标题:
    <input type='text'  name=title value={$result['title']}><br />";
        echo "留言者:
    <input type='text' name=name value={$result['name']}><br />";
        echo "内容
    <textarea col='40' rows='8' name=contents>{$result['contents']}</textarea>";
        echo "
    <input type='submit' value='更新'></form>";
    }

    更新:
    我们有了编辑,只是显示编辑的表单,那么,如果我们修改更新了数据,就会跳转到其他的地址——更新
    就是:原创安徽php社区:http://bbs.hfphp.org

    $update = spUrl("main","update");     //构造编辑时的更新跳转地址 

     那么,我们来看看更新的代码:

    代码
    function update(){
        $guestbook = spClass("guestbook");        //.....
        $postres = $this->spArgs();   //获取所有传递过来的数据
        //print_r($_POST);
        //dump($postres);  //调试看看
            //update所需要更新条件
        $condition = array('id'=>$postres['id']);
            //update所需要更新值数组
        $updaterows = array('title'=>$postres['title'],'name'=>$postres['name'],'contents'=>$postres['contents']);
        //更新
        $res = $guestbook->update($condition,$updaterows);    //一个知识点,speedphp的更新update
        if($res){       //成功三秒跳回
            echo "更新成功,三秒后跳回";   
            echo "
    <meta http-equiv='refresh' content='1;url=index.php'>";
        }else{
            echo "更新失败";
                    echo "
    <meta http-equiv='refresh' content='1;url=index.php'>";
        }
    }

    update —— 修改数据,该函数将根据参数中设置的条件而更新表中数据。

    用法:update($conditions, $row)

    参数:
    $conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
    $row,数组形式,修改的数据,此参数的格式用法与create的$row是相同的。在符合条件的记录中,将对$row设置的字段的数据进行修改。

    代码
     // 将小李的第一条留言,也就是gid = 12的留言的内容修改成“我的第一条留言”。
     // 构造查找条件  
     $conditions = array('gid'=>12); // 思考为什么不能用 'name' => '小李' 来作为条件呢?
     // 设置需要更新的字段,注意没必要更新的字段请不要设置。这里我们仅仅修改contents(内容)对应的数据。
     $row = array('contents'=>'我的第一条记录'); 
     $gb = spClass('gb'); 
     $gb->update($conditions, $row);  

    注意:返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
    返回FALSE是语句执行失败


    删除:
    删除和编辑一样,我们也有一个删除的按钮跳转事件,跳向删除的动作,
    构造URL,如下:原创安徽php社区:http://bbs.hfphp.org

    $contentdel = spUrl('main','del',array('id'=>$value['id'])); 

     删除的代码如下:

    代码
    //删除
    function del(){
        $id = $this->spArgs("id");
        $guestbook = spClass("guestbook");
        $condition = array('id'=>$id);
        $a = $guestbook->delete($condition);   //一个知识点,delete
        if($a){
            echo "删除成功";
        }else{
            echo "删除失败";
        }
    }

    删除,其实很简单,对于Speedphp的删除只要一个条件即可

    delete —— 按条件删除记录
    用法:delete($conditions)
    参数:
    $conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
    delete的操作将删除符合$conditions条件的记录。
    例如:

    // 这里我们将删除小李的第二条留言,也就是gid=13的记录  
    // 构造查找条件  

    $conditions = array('gid'=>13); // 构造条件  ,数组
    $gb = spClass('gb');  
    $gb->delete($conditions);   

    这样就可以了,此外,除了delete外,speedphp还 定义了一个deleteByPk,实现删除更简单,但是有局限性
    deleteByPk —— 按给定的数据表的主键删除记录原创安徽php社区:http://bbs.hfphp.org

    用法:deleteByPk($pk)
    参数:
    $pk,字符串或数字,数据表主键的值。
    该函数简化了delete的操作,根据给定的主键删除对应的记录。

    // 在gb表中gid就是主键,我们将删除gid为13的记录      
     // 使用deleteByPk  

     $gb->deleteByPk(13);  
     
    // 等同于使用delete  
    $conditions = array('gid'=>13); // 构造条件  
    $gb->delete($conditions);         

    回复:原创安徽php社区:http://bbs.hfphp.org
    在show动作中,我们已经写出了回复表单,代码就不贴了,如果大家自己写了测试代码那么应该很清楚,如果没有写,只是看的话,
    那么你就向前看吧.
    在代码中我们构造了一个回复的地址:$posturl = spUrl('main','reply');
    他会提交到,main控制器的reply动作中来,reply的动作如下:

    代码
    function reply(){
      
    $guestbook = spClass("guestbook");
      
    $a1 = $this->spArgs();
      
    //dump($a1);
      //我们已经在前面说过了,如果input等标签的的name值和数据库中的字段名相同,那么我们可以直接在create参数中填上$this->spArgs()
      //不然的话,我们还要$id = $this->spArgs("id"); 等类似的一个一个获取,然后重组成数组给create当参数,很麻烦,也违背了框架,
      //快速开发的理念。

      $guestbook->create($this->spArgs());
      
    //链接返回,大家也可以让他主动跳回。
      echo "留言成功,<a href='index.php'>返回</a></p>";
    }

    回复的本质还是忘数据库里面添加数据,使用create,

    原创安徽php社区:http://bbs.hfphp.org

    来源:http://bbs.hfphp.org/viewthread.php?tid=82,转载请注明出处谢谢。。

  • 相关阅读:
    Java8 新特性
    Less语法
    【手动开栈】【dfs序】【树状数组】【Tarjan】bzoj2819 Nim
    【dfs序】【树状数组】bzoj1103 [POI2007]大都市meg
    【树链剖分】【树状数组】【最近公共祖先】【块状树】bzoj3631 [JLOI2014]松鼠的新家
    【块状树】【树链剖分】【线段树】bzoj3531 [Sdoi2014]旅行
    【树链剖分】【分块】【最近公共祖先】【块状树】bzoj1984 月下“毛景树”
    【树链剖分】【函数式权值分块】bzoj1146 [CTSC2008]网络管理Network
    【单调队列】bzoj1047 [HAOI2007]理想的正方形
    【单调队列】bzoj2096 [Poi2010]Pilots
  • 原文地址:https://www.cnblogs.com/jincon/p/1774773.html
Copyright © 2011-2022 走看看