返回列表 回复 发帖

MooPHP框架十分钟创建Blog程序

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


参考资料:
1.MooPHP模板使用方法
2.MooPHP后台类使用方法
3.MooPHP数据库类使用方法

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

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


  5. if($operation == 'add') {

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

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

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

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

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

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

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

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

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

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

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

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

  41.         $blogList = $_MooClass['MooMySQL']->getAll("SELECT id, title, dateline FROM moophp_blogs ORDER BY id DESC");
  42.         foreach($blogList as $blog) {
  43.                 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>';
  44.         }

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

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

  6. } else {
  7.         $blogList = $_MooClass['MooMySQL']->getAll("SELECT * FROM moophp_blogs ORDER BY id DESC");
  8.         include MooTemplate("blog_index");
  9. }
复制代码
第五步,建立blog_view.htm与blog_index.htm两个模板文件
blog_index.htm核型代码如下:
  1.                         <!--{loop $blogList $key $blog}-->
  2.                         <h3><a href="{MOOPHP_URL}/blog.php?blogid={$blog['id']}">{$blog['title']}</a></h3>
  3.                         <p class="created">
  4.                                 {php echo gmdate('Y年m月d日 H:i:s', $blog['dateline'])} <a href="{MOOPHP_URL}/blog.php?blogid={$blog['id']}">浏览</a>
  5.                         </p>
  6.                         <div class="body"><p>{$blog['content']}</p></div>
  7.                                 <!--{if $key < count($blogList) - 1}-->
  8.                                 <hr />
  9.                                 <!--{/if}-->
  10.                         <!--{/loop}-->
复制代码
blog_view.htm核心代码如下:
  1.                         <h3><a href="{MOOPHP_URL}/blog.php?blogid={$bloginfo['id']}">{$bloginfo['title']}</a></h3>
  2.                         <p class="created">
  3.                                 {php echo gmdate('Y年m月d日 H:i:s', $bloginfo['dateline'])}
  4.                         </p>
  5.                         <div class="body"><p>{$bloginfo['content']}</p></div>
复制代码
  1.                                 <h3>最近日志:</h3>
  2.                                 {block type=query/name=newbloglist/sql=SELECT * FROM moophp_blogs ORDER BY id DESC/cachetime=3600}
  3.                                 <!--{loop $_MooBlock['newbloglist'] $blog}-->
  4.                                         <a href="{MOOPHP_URL}/blog.php?blogid={$blog['id']}">{$blog['title']}</a>
  5.                                 <!--{/loop}-->
复制代码
涉及文件下载
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
水水,僭燮水,kimi都是我
执着追求于PHP开源事业,所需要做的只是不断地努力!
顶!半夜抢沙发!
真正的尊敬,既不属于那些批评别人头头是道的人,也不是属于给强人指出过错、指点别人哪里做的不好的人。真正的尊敬,是属于那些勇于亲身投入战场,脸上沾满了尘土、汗水和鲜血的奋斗者们。他们坚持不懈的努力,尽管曾经犯下错误,并一再失败,但他们满怀激情,执著不懈,将生命奉献于崇高的事业。他们为经过艰辛努力最终取得的伟大成就而自豪,如果失败,他们也败得荣耀。因此,那些既没赢得过胜利,也没懂得什么叫做失败的,冷漠、胆怯的灵魂,是永远也无法与这些真正值得尊敬的人相提并论的。
http://www.cnedwin.com
做个板凳学习下


得个5楼也不错
我坐6搂
水水,僭燮水,kimi都是我
执着追求于PHP开源事业,所需要做的只是不断地努力!
好东西!支持下,学写了!谢谢!
这个例子是否应该有个分页功能?
原帖由 simpleboy 于 2008-5-27 17:26 发表
这个例子是否应该有个分页功能?
我想kimi的例子仅仅是引导大家入门上手MooPHP,而不是做一个完善的blog,所以很多地方都没有完善起来。
木有关系的
真正的尊敬,既不属于那些批评别人头头是道的人,也不是属于给强人指出过错、指点别人哪里做的不好的人。真正的尊敬,是属于那些勇于亲身投入战场,脸上沾满了尘土、汗水和鲜血的奋斗者们。他们坚持不懈的努力,尽管曾经犯下错误,并一再失败,但他们满怀激情,执著不懈,将生命奉献于崇高的事业。他们为经过艰辛努力最终取得的伟大成就而自豪,如果失败,他们也败得荣耀。因此,那些既没赢得过胜利,也没懂得什么叫做失败的,冷漠、胆怯的灵魂,是永远也无法与这些真正值得尊敬的人相提并论的。
http://www.cnedwin.com
是这样的,对于模板的用法关于分页我不是很清楚!找了相关的moophp插件也没找到分页示例!所以希望能够 加上一个分页功能
返回列表