创建数据表,实现基本功能代码

新建数据表

  • 添加数据库描述文件: app/notebook/dbschema/item.php
    <?php
    $db
    ['item']=array (
      
    'columns' =>
      array (
        
    'item_id' =>  array (
          
    'type' => 'number',
          
    'required' => true,
          
    'extra' => 'auto_increment',
          
    'pkey' => true
        
    ),
        
    'item_subject' => array ( 'type' => 'varchar(100)' ),
        
    'item_content' => array ( 'type' => 'text' ),
        
    'item_posttime' => array ( 'type' => 'time' ),
        
    'item_email' => array ( 'type' => 'email'),
      ),
    );
  • 数据库文件写好后,执行update命令即可自动创建数据库。
    app/base/cmd update
    Updating base_application_dbtable@notebook.
    CREATE TABLE `sdb_notebook_item` (
    	`item_id` mediumint(8) unsigned not null auto_increment,
    	`item_subject` varchar(100),
    	`item_content` text,
    	`item_posttime` int(10) unsigned,
    	`item_email` varchar(255),
    	primary key (item_id)
    )ENGINE = MyISAM DEFAULT CHARACTER SET utf8;
    Updating base_application_cache_expires@notebook.
    Installing Cache_Expires DB:SDB_NOTEBOOK_ITEM
    UPDATE CACHE EXPIRES KV DATA
    Applications database and services is up-to-date, ok.
    

编写php和html模版

  • 控制器文件:app/notebook/controller/default.php
    <?php
    class notebook_ctl_default extends base_controller{

        public function 
    index(){
            
    $this->pagedata['items'] = $this->app->model('item')->getList('*');
            
    $this->display('default.html');
        }

        public function 
    addnew(){
            
    $this->begin(array("ctl" => "default""act" => "index"));
            
    $data = array(
                    
    'item_subject'=>$_POST['subject'],
                    
    'item_content'=>$_POST['content'],
                    
    'item_email'=>$_POST['email'],
                    
    'item_posttime'=>time(),
                );
            
    $result $this->app->model('item')->insert($data);
            
    $this->end($result);
        }

    }
  • 编写视图文件:app/notebook/view/default.html 为了简化实现,此处用了webkit 浏览器的私有属性
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>Notebook</title>
        <link rel="stylesheet" type="text/css"
                href="<{$env.app.res_url}>/style.css" media="screen" />
    </head>
    <body>
        <h1>Notebook</h1>
        <dl>
            <{foreach from=$items item=item}>
            <dt>
            <{$item.item_subject}>
            <span class="date">日期: <{$item.item_posttime|cdate}></span>
            </dt>
            <dd><{$item.item_content}></dd>
            <{/foreach}>
            <div style="margin-bottom:20px;clear:both" />&nbsp;</div>
        </dl>

        <form id="writer" method="post" action="<{link ctl='default' act='addnew' app='notebook'}>">
            <input id="writer-subject" type="text" value=""
                    name="subject" placeholder="请输入留言的标题" />
            <input id="writer-email" type="text" value=""
                    name="email" placeholder="请输入邮箱地址" />
            <textarea name="content" placeholder="留言正文"></textarea>
            <input type="submit" value="发布新留言" id="writer-submit" />
        </form>
    </body>
</html>
  • 我们写个简单的样式:app/notebook/statics/style.css
html{background:#A4C5FF}
body{width:380px;margin:auto;background:#fff;padding:20px}
dd{padding:10px}
dt{border-bottom:1px solid #ccc;margin:10px 0;
	font-weight:bold;color:#42597B;font-size:20px;}
#writer{background:#E8EEF7;padding:10px;border:1px solid #E1ECFE}
#writer-email,#writer-subject{display:block;margin-bottom:10px;width:300px}
#writer textarea{width:300px;margin-bottom:10px;display:block;height:80px}
#writer-submit{padding:2px 18px;font-weight:bold;}
h1{text-align:center;padding:20px;text-shadow: 2px 2px 2px #999;}

內容目录

上一个主题

创建项目目录并安装

下一个主题

类的自动载入机制

快速搜索

输入相关的模块,术语,类或者函数名称进行搜索