PHP框架-thinkphp-學習筆記-CURD(1)

coolhe發表於2014-11-18

最近這段時間學習thinkphp,感覺確實是很好用的。不過在學習過程中也遇到了一些問題,現在寫出來和大家一起分享;

實驗目標:表的CURD。
目標及條件:
1. 主鍵用guid方式,也就是webid能自動以guid進行填充;
2. 插入時能自動填寫一些預設值,比如:新增時,欄位: isEnabled=1, dataStatus=1,更新時根據實際值改變。
3. 插入時crtDate,updDate自動插入當前時間。
4. 更新時updDate會自動更新當前時間,crtDate不變。
5. 插入和更新時pinyin欄位能根據webname欄位的值自動填充。

環境:php 5.2.17; think3.12; mysql 5.0.1b


1.建立表

點選(此處)摺疊或開啟

  1. drop table if exists ebook_webinfo;

  2. /*==============================================================*/
  3. /* Table: ebook_webinfo */
  4. /*==============================================================*/
  5. create table ebook_webinfo
  6. (
  7.    webId varchar(64) not null comment \'guid\',
  8.    webAddr varchar(100) comment \'範例:www.webset.com\',
  9.    webName varchar(100) comment \'網站名稱\',
  10.    pinYin varchar(100) comment \'拼音碼\',
  11.    crtDate datetime comment \'建立時間\',
  12.    updDate datetime comment \'最後修改時間\',
  13.    isEnabled int comment \'啟用\',
  14.    dataStatus int comment \'資料狀態\',
  15.    primary key (webId)
  16. );

2. CURD: 
建立如下php檔案,記得要有thinkphp類庫哦:)
1.建立Lib->Action->WebinfoAction.class.php, 注意大小寫。
2.建立Lib->Model->WebinfoModel.class.php
3.建立Tpl->Webinfo目錄,以及下面的add.html, edit.html檔案。




2.1 WebinfoAction.class.php

點選(此處)摺疊或開啟

  1. class WebinfoAction extends Action{

    private  $tablename = 'Webinfo';

    public function __construct()
    {
    }

    public function index()
    {
      // 使用檢視顯示, Tpl/Webinfo/index.html
      $this->name = $this->tablename; // 進行模板變數賦值
     
      // 讀取資料庫
      $Data = M($this->tablename); // 例項化Data資料模型
      $this->data = $Data->select();
      $this->display();
    }

    public function insert(){
      $Form   =   D($this->tablename);
      if($Form->create()) {
        $result =   $Form->add();
        echo $Form->getLastSql();
        if($result) {
          $this->success('操作成功!');
        }else{
          $this->error('寫入錯誤!');
        }
      }else{
        $this->error($Form->getError());
      }
    }

    // 該處的id不能變
    public function edit($id=0){
      $Form   =   M($this->tablename);
      echo $id;
      $this->vo   =   $Form->find($id);
      $this->display();
    }
    public function update(){
      $Form   =   D($this->tablename);

      if($Form->create()) {
        $result =   $Form->save();
        if($result) {
          $this->success('操作成功!');
        }else{
          $this->error('寫入錯誤!');
        }
      }else{
        $this->error($Form->getError());
      }
    }
    }

index.html

點選(此處)摺疊或開啟

  1. <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
  2. <html>
  3. <head>
  4. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
  5. <title>hello {$name}</title>
  6. </head>
  7. <body>
  8.     <!-- hello {$name}
    --&gt

  9.     <table style=\"BORDER-COLLAPSE: collapse\" borderColor=#000000 height=40 cellPadding=1 width=250 align=center border=1>
  10.     <tr><td>網站ID</td><td>網站名稱</td><td>網址</td></tr>
  11.         <volist name=\"data\" id=\"vo\">
  12.         <tr>
  13.         <td>{$vo.webId}</td>
  14.         <td>{$vo.webName}</td>
  15.         <td>{$vo.webAddr}</td>
  16.         </tr>        
  17.      </volist>
  18.     </table>
  19. </body>
  20. </html>
add.html

點選(此處)摺疊或開啟

  1. <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
  2. <html>
  3. <head>
  4. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
  5. <title>Webinfo add</title>
  6. </head>
  7. <body>
  8.     <FORM method=\"post\" action=\"__URL__/insert\">    
  9.     網站名稱:<INPUT type=\"text\" name=\"webName\" ><br/>
  10.     網址:<INPUT type=\"text\" name=\"webAddr\" ><br/>
  11.      <INPUT type=\"submit\" value=\"提交\">
  12.      </FORM>
  13. </body>
  14. </html>
edit.html

點選(此處)摺疊或開啟

  1. <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
  2. <html>
  3. <head>
  4. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
  5. <title>編輯</title>
  6. </head>
  7. <body>
  8. 編輯狀態:
  9.     <FORM method=\"post\" action=\"__URL__/update\">    
  10.     網站ID:<INPUT type=\"text\" name=\"webId\" value=\"{$vo.webId}\"><br/>
  11.     網站名稱:<INPUT type=\"text\" name=\"webName\" value=\"{$vo.webName}\"><br/>
  12.     網址:<INPUT type=\"text\" name=\"webAddr\" value=\"{$vo.webAddr}\"><br/>
  13.     <INPUT type=\"hidden\" name=\"webId\" value=\"{$vo.webId}\">
  14.     <INPUT type=\"submit\" value=\"提交\">
  15.   </FORM>
  16. </body>
2.2 WebinfoModel.class.php

點選(此處)摺疊或開啟

  1. <?php
  2. class WebinfoModel extends Model {
  3.     
  4.     protected $fields = array(
  5.             'webId',
  6.             'webName',
  7.             'webAddr',
  8.             'pinYin',
  9.             'crtDate',
  10.             'updDate',
  11.             'isEnabled',
  12.             'dataStatus',
  13.             '_pk'=>'webId' //主鍵
  14.     )
  15.     ;
  16.     
  17.     // 定義自動驗證
  18.     protected $_validate = array(
  19.             array('webName','require','名稱必須'),
  20.     );
  21.     
  22.     // 定義自動完成
  23.     // guid是我的另外一個函式,在thinkphp中沒有,需要自己新增
  24.     protected $_auto = array(            
  25.             array('webId','guid',1,'function'),
  26.             array('crtDate','date',1,'function',array('Y-m-d H:i:s')),
  27.             array('updDate','date',self::MODEL_BOTH,'function',array('Y-m-d H:i:s')),
  28.             array('isEnabled','1',1,'function'),
  29.             array('dataStatus','1',1,'function'),
  30.             array('pinYin','getCurPinYin',3, 'callback'),
  31.     );
  32.  
  33.     // 獲取拼音
  34.     function getCurPinYin()
  35.     {
  36.        return firstPinyin($_POST['webName']);  // firstPinyin是自己定義的獲得拼音首字母函式
  37.     }
       }
rizi_cfun_str.php

點選(此處)摺疊或開啟

  1. /**
  2.  * 獲取Guid
  3.  * @return guid
  4.  */
  5. function guid()
  6. {
  7.     $guid = com_create_guid();
  8.     $str_grid = str_replace('}','', str_replace('{','',str_replace('-', '', $guid)));
  9.     return $str_grid;
    }


通過以上的實驗,可以初步學習thinkphp簡單的CURD。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3090/viewspace-1337494/,如需轉載,請註明出處,否則將追究法律責任。

相關文章