奇矩互动官方论坛's Archiver

奇矩互动IDC

kimi 发表于 2008-5-19 00:20

MooPHP框架十分钟创建Blog程序

[b]前言[/b]
本文将一步一步引导您开始MooPHP的探险之路。通过一个简单的blog系统的构建,为您展现出MooPHP框架独特的魅力。
[color=Red][size=5]注:本程序所涉及的一切文件和代码,已经内置在MooPHP 0.91.178 alpha这个版本中,并可能有少许改动。[/size][/color]


参考资料:
1.[url=http://www.moophp.net/documents/templatesyntax]MooPHP模板使用方法[/url]
2.[url=http://www.moophp.net/documents/adminclasss]MooPHP后台类使用方法[/url]
3.[url=http://www.moophp.net/documents/mysqlclasssyntax]MooPHP数据库类使用方法[/url]

[b]第一步[/b]:建立数据库,配置MooPHP运行框架参数
a.通过PHPMyAdmin或者MySQL命令行使用以下SQL语句创建本程序需要的数据库[code]DROP TABLE IF EXISTS moophp_blogs;
CREATE TABLE moophp_blogs (
        id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
        title CHAR(80) NOT NULL COMMENT '标题',
        content text NOT NULL COMMENT '内容',
        dateline INT(10) UNSIGNED NOT NULL COMMENT '时间',
         PRIMARY KEY (id)
) TYPE = MyISAM  DEFAULT CHARSET=utf8 COMMENT = 'Blog示例表';[/code]b.配置MooPHP/MooConfig.php文件中MySQL相关的数据库配置,比如,本机测试的配置可能为下[code]
$dbHost = 'localhost';
$dbName = 'project_moophp';
$dbUser = 'root';
$dbPasswd = 'password';
$dbTablePre = 'moophp_';
$dbCharset = 'UTF-8';
$dbPconnect = 0;
define('MOOPHP_ALLOW_BLOCK', TRUE);
define('MOOPHP_ALLOW_CACHE', TRUE);
define('MOOPHP_ALLOW_MYSQL', TRUE);
[/code][b]第二步[/b]通过MooPHP内置的MooAdminTemplate类迅速创建一个可运行的后台。
本处代码忽略,详细请参考《[url=http://www.moophp.net/documents/adminclasss]MooPHP后台类使用方法[/url]》

[b]第三步[/b]
建立Moo-admin/blog.inc.php文件,具体内容为[code]!defined('IN_MOOPHP') && exit('Access Denied');
$operation = MooGetGPC('operation', 'string');
$id = MooGetGPC('id');
$operation = in_array($operation, array('add', 'edit', 'del', 'list')) ? $operation : 'add';


if($operation == 'add') {

        if(MooSubmit('addsubmit')) {
                $title = MooGetGPC('title', 'string');
                $content = MooGetGPC('content', 'string');
                $dateline = time();
                $_MooClass['MooMySQL']->query("INSERT INTO moophp_blogs SET title='$title', content='$content', dateline='$dateline'");
                showmessage('新增日志成功', 'admin.php?action=blog&operation=list');
        }
        
        $admin->showForms('addsubmit', 'formheader', 'admin.php?action=blog&operation=add');
        $admin->showType('添加日志', 'top', 'addsubmit');

        
        $admin->showForm('标题', 'title', '', 'text', '20%', '', 0, '日志标题');
        $admin->showForm('内容', 'content', '', 'textarea', '20%', '', 0, '日志内容');

        
        $admin->showType('', 'bottom');
        $admin->showFormS('addsubmit', 'formfooter', '提交');

} elseif ($operation == 'edit') {

        if(MooSubmit('editsubmit')) {
                $title = MooGetGPC('title', 'string');
                $content = MooGetGPC('content', 'string');
                $_MooClass['MooMySQL']->query("UPDATE moophp_blogs SET title='$title', content='$content' WHERE id='$id'");
                showmessage('新增日志成功', 'admin.php?action=blog&operation=list');
        }

        $bloginfo = $_MooClass['MooMySQL']->getOne("SELECT * FROM moophp_blogs WHERE id='$id'");
        $admin->showForms('editsubmit', 'formheader', 'admin.php?action=blog&operation=edit&id='.$id);
        $admin->showType('添加日志', 'top', 'editsubmit');

        $admin->showForm('标题', 'title', $bloginfo['title'], 'text', '20%', '', 0, '日志标题');
        $admin->showForm('内容', 'content', $bloginfo['content'], 'textarea', '20%', '', 0, '日志内容');

        $admin->showType('', 'bottom');
        $admin->showFormS('editsubmit', 'formfooter', '提交');

} elseif ($operation == 'del') {

        $_MooClass['MooMySQL']->query("DELETE FROM moophp_blogs WHERE id='$id'");
        showmessage('删除日志成功', 'admin.php?action=blog&operation=list');

} elseif ($operation == 'list') {

        $admin->showType('编辑日志', 'top');

        $blogList = $_MooClass['MooMySQL']->getAll("SELECT id, title, dateline FROM moophp_blogs ORDER BY id DESC");
        foreach($blogList as $blog) {
                echo '<tr><td width="100" class="altbg1" valign="top"><a href="admin.php?action=blog&operation=edit&id='.$blog['id'].'">编辑</a> | <a href="admin.php?action=blog&operation=del&id='.$blog['id'].'">删除</a></td><td class="altbg2"><a href="blog.php?blogid='.$blog['id'].'" target="_blank">'.$blog['title'].'</a></td></tr>';
        }

        $admin->showType('', 'bottom');

}
[/code][b]第四步[/b],前台展示页面blog.php,代码如下:[code]
require dirname(__FILE__) . '/MooPHP/MooPHP.php';
$blogid = MooGetGPC('blogid');
if($blogid) {
        $bloginfo = $_MooClass['MooMySQL']->getOne("SELECT * FROM moophp_blogs WHERE id='$blogid'");
        include MooTemplate("blog_view");

} else {
        $blogList = $_MooClass['MooMySQL']->getAll("SELECT * FROM moophp_blogs ORDER BY id DESC");
        include MooTemplate("blog_index");
}[/code]第五步,建立blog_view.htm与blog_index.htm两个模板文件
blog_index.htm核型代码如下:[code]                        <!--{loop $blogList $key $blog}-->
                        <h3><a href="{MOOPHP_URL}/blog.php?blogid={$blog['id']}">{$blog['title']}</a></h3>
                        <p class="created">
                                {php echo gmdate('Y年m月d日 H:i:s', $blog['dateline'])} <a href="{MOOPHP_URL}/blog.php?blogid={$blog['id']}">浏览</a>
                        </p>
                        <div class="body"><p>{$blog['content']}</p></div>
                                <!--{if $key < count($blogList) - 1}-->
                                <hr />
                                <!--{/if}-->
                        <!--{/loop}-->[/code]blog_view.htm核心代码如下:[code]                        <h3><a href="{MOOPHP_URL}/blog.php?blogid={$bloginfo['id']}">{$bloginfo['title']}</a></h3>
                        <p class="created">
                                {php echo gmdate('Y年m月d日 H:i:s', $bloginfo['dateline'])}
                        </p>
                        <div class="body"><p>{$bloginfo['content']}</p></div>[/code][code]                                <h3>最近日志:</h3>
                                {block type=query/name=newbloglist/sql=SELECT * FROM moophp_blogs ORDER BY id DESC/cachetime=3600}
                                <!--{loop $_MooBlock['newbloglist'] $blog}-->
                                        <a href="{MOOPHP_URL}/blog.php?blogid={$blog['id']}">{$blog['title']}</a>
                                <!--{/loop}-->[/code]涉及文件下载
sql.txt;admin.php;blog.php
Moo-admin目录下的menu.inc.php;blog.inc.php
Moo-templates目录下的blog_index.htm;blog_view.htm;blog_style.css

Edwin 发表于 2008-5-19 02:02

顶!半夜抢沙发!

blankyao 发表于 2008-5-22 11:17

做个板凳学习下

wangbaoming 发表于 2008-5-23 00:47

tlk 发表于 2008-5-24 19:39



得个5楼也不错

kimi 发表于 2008-5-24 22:53

我坐6搂

pop 发表于 2008-5-26 20:08

好东西!支持下,学写了!谢谢!

simpleboy 发表于 2008-5-27 17:26

这个例子是否应该有个分页功能?

Edwin 发表于 2008-5-27 17:39

[quote]原帖由 [i]simpleboy[/i] 于 2008-5-27 17:26 发表 [url=http://www.ismole.net/redirect.php?goto=findpost&pid=2423&ptid=671][img]http://www.ismole.net/images/common/back.gif[/img][/url]
这个例子是否应该有个分页功能? [/quote]

我想kimi的例子仅仅是引导大家入门上手MooPHP,而不是做一个完善的blog,所以很多地方都没有完善起来。
木有关系的

simpleboy 发表于 2008-5-28 15:15

是这样的,对于模板的用法关于分页我不是很清楚!找了相关的moophp插件也没找到分页示例!所以希望能够 加上一个分页功能

simpleboy 发表于 2008-5-28 15:16

是这样的,对于模板的用法关于分页我不是很清楚!找了相关的moophp插件也没找到分页示例!所以希望能够 加上一个分页功能:)

aming 发表于 2008-5-28 17:26

分页函数的使用示例[code]$pageSize = 20;//每页显示
$currepage = ($_GET['page'] == '') ? 1 : intval($_GET['page']);//当前页
$start = ($currepage - 1) * $pageSize;
$num = $db->numRows("SELECT * FROM {$tablePre}test  ORDER BY id DESC");
$list = $db->getAll("SELECT * FROM {$tablePre}test  ORDER BY id DESC LIMIT $start,$pageSize");
echo multi($num, $pageSize, $currepage,'admin.php?action=list');
[/code]说明 multi(总数,每页显示数,当前页,页面链接)

如果还是不明白的话可以下载[url]http://www.ismole.net/thread-644-1-1.html[/url]表单系统,里面的admin.php有使用到分页。

simpleboy 发表于 2008-5-29 14:35

我以为对于模板还会有更好的方法~~ 原来还是这样,谢谢

动感囧人 发表于 2008-7-12 23:10

[quote]原帖由 [i]aming[/i] 于 2008-5-28 17:26 发表 [url=http://www.ismole.net/redirect.php?goto=findpost&pid=2474&ptid=671][img]http://www.ismole.net/images/common/back.gif[/img][/url]
分页函数的使用示例$pageSize = 20;//每页显示
$currepage = ($_GET['page'] == '') ? 1 : intval($_GET['page']);//当前页
$start = ($currepage - 1) * $pageSize;
$num = $db->numRows("SELECT * FROM {$table ... [/quote]

这个分页函数是内置的吗?

aming 发表于 2008-7-13 00:34

是的。用法 multi(总数, 每页数, 当前页,分页链接);

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.