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,转载请注明出处谢谢。。

 

 

 

 

posted @ 2010-07-10 11:10  小寒子  阅读(478)  评论(0编辑  收藏  举报