PHP仿博客园 个人博客(2) 数据库增添改删(7)


  $post = new Post;
    $filter['post_id'] = isset( $_GET['postID'] ) ? ( int )$_GET['postID'] : "";

    //  !important 在数据删除之前 先将该分类下的文章数量减 1
    // 否则你不知道删除那个分类下的文章数量
    // 我犯了个逻辑错误 先删除了 文档, 然后查该文档的分类ID;永远也查不到,因为已经不存在了。
    $post->reduceChildNumber( "category", ( int ) $_GET['postID'] );

    $result = $post->delete("post", $filter );

这里我们只要初始化我们文章头顶的那个 model 就可以轻松调用 delete() 方法。

CREATE 插入
先看这个指令 post.php?action=newPost
说实话,我很久没有插入了。呵呵! 看控制方法:

复制代码 代码如下:


function newPost( )
 {
    $results['action'] = "newPost" ;
    $results['pageTitle'] = " Add New post" ;
    $results['newPost'] = "true";
    $results['path'] = "<a href='https://www.jb51.net/?action=isPost' >随笔</a>&raquo; <span>添加随笔</span>" ;
    $post = new Post;
    $cat = new Category;
    $results['categories'] =  $cat->getCategoryList( "post");
    // 新建文档
    if( isset( $_POST['saveChanged'] ))
    {   
        $post-> storePostFormValues( $_POST );
        $result = $post->insertPost( );
        if( $result )
        {
            $post->addChildNumber( "category", $_POST['category'] );
            header("Location: post.php?action=isPost&status=Inserted");
        }
        else
        {
            header("Location: post.php?action=isPost&error=InsertedFailed");
        }
        // 保存到草稿箱
    } else if( isset( $_POST['saveDraft']) )
    {
        $post = new Post;
        $post-> storePostFormValues( $_POST );
        $post->saveDraft( );
        header("Location: post.php?action=isPost&status=postSaveToDraft");
        // cancel
    } else if( isset( $_POST['cancel'] ))
    {
        header("Location: post.php?action=isPost");
    }
    else
    {
        require_once(TEMPLATE_PATH . "/post/post_edit.php");
    }
 }

我们使用一个模版来同时进行文档的插入和更新。关键就是 isset( ),当我们调用控制器的 newPost 方法时,我们并没有往模版中传入文档。
所以在模版中,我们用 isset() 来做判断时,我们获得了空值,是个好东西;这样我们不会输出任何内容到模版中去。这样,我们等待用户提交表单,在这里,我为了省事,暂时没有对表单进行过滤,不过我留了个后门以后来更新。 好的,假设我们的表单被提交了,(也被你基本的过滤了)。

我们调用 post model中 的 storePostFormValues( ) , storeDiaryFormValues( ); 记得嘛,这个方法把所有的表单内容放入一个数组,在做了基本的类型检查之后,
到这里已经成功一半了。下面就是 insert***()。 这就是mysql 万能数据库操作类的好处,它能帮你处理各种表单,各种类型。当然你如果要求更细,更多,你可以继承它,扩展
它的方法,或新建方法。 到这里离完成还有一步,addChildNumber( )。 当你为你的文档选择分类时,同时也要在相应的分类表中的 count_child_number中加 1 。
如果用户选择将文档放入草稿箱的话,只需插入一个 type = PostDraft 的文档记录。

UPDATE 更新
先看这个指令 post.php?action=updatePost&amp;postID=132
更新首先就要获得这个文档的数据,postID, 同样是 GET方法得到。 这样我们就可以初始化表单中的 value 值了。 isset( ) 在这里起了关键作用,不是嘛?

后面的部分大同小异, storePostFormValues( ) , storeDiaryFormValues( ); 然后你调用 post model update***( ) 。
看代码:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/308829fe83db7cb514ea672552e928f8.html