亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1239 | 回復(fù): 0
打印 上一主題 下一主題

創(chuàng)造世界上最簡單的 PHP 開發(fā)模式 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-04-05 17:01 |只看該作者 |倒序?yàn)g覽

*************************************/
/* author:大齡青年
/* email :wenadmin@sina.com
/* from:
http://blog.csdn.net/hahawen
/*************************************/
  php 作為“最簡單”的 Web 腳本語言, 在國內(nèi)的市場越來越大,phper 越來越多,但是感覺大多數(shù)人好像沒有考慮到模式問題,什么樣的設(shè)計(jì)模式才是最優(yōu)的,才是最適合自己目前工作的,畢竟效率是最重要的(用省下的時間打游戲,多美啊...)。MVC 應(yīng)該是首選,
www.sourceforge.net
上有好多優(yōu)秀的基于 MVC 的開源項(xiàng)目,大家可以沖過去研究研究。
  前幾天給自己公司網(wǎng)站改版,主要還是文章發(fā)布系統(tǒng),老板說后臺我想怎么設(shè)計(jì)就怎么設(shè)計(jì),唯一的前提就是快。于是自己搭建了一個簡單的發(fā)布系統(tǒng)的框架。如果單純從文章發(fā)布系統(tǒng)上講,基本上可以滿足“中小型”企業(yè)網(wǎng)站的文章發(fā)布系統(tǒng)的要求,后臺的總共的php代碼不超過800行,而且支持任意擴(kuò)充和plugin功能。
  廢話不再說了,下面把我的架構(gòu)講一下,希望對您能有所幫助。
  注意:在開始前,需要您下載一個模板處理工具類:“smarttemplate”,并了解一些模板的簡單的使用。
  我的測試環(huán)境:windows2k/apache2/php4.3.2/smarttemplate類庫
  先講一下整個web站點(diǎn)的文件的分布,在后面的章節(jié)中將陸續(xù)創(chuàng)建并填充下面的目錄和文件
  我的服務(wù)器的web的根目錄是 “C:/Apache2/htdocs/”
  我在下面建立了一個文件夾“cmstest”作為我的網(wǎng)站的主文件夾
  文件夾“cmstest”下面的子文件結(jié)構(gòu)是:
/config.inc.php
/list1.php
/list2.php
/new.php
/add.php
/view.php
/page.js
/src/MysqlUtil.php
/src/ArticleUtil.php
/src/CoreUtil.php
/src/ParseTpl.php
/src/lib/smarttemplate/*.* 這個目錄用來存放smarttemplate的類庫的
/smart/template/list1.htm
/smart/template/list2.htm
/smart/template/new.htm
/smart/template/add.htm
/smart/template/view.htm
/smart/cache/
/smart/temp/
設(shè)計(jì)步驟:
  • 考慮自己公司的網(wǎng)站的特點(diǎn)和已經(jīng)設(shè)計(jì)的模板的結(jié)構(gòu),總結(jié)要實(shí)現(xiàn)的功能,列出清單。
  • 分析功能清單,把功能分類。每一類的功能都是有共同點(diǎn)的,可以通過相同的方法實(shí)現(xiàn)的。
  • 根據(jù)功能,設(shè)計(jì)數(shù)據(jù)庫的表結(jié)構(gòu)
  • 設(shè)計(jì)一個配置文件config.inc.php, 用來記錄網(wǎng)站的一些基本的信息,包括數(shù)據(jù)庫名........
  • 為每一類功能設(shè)計(jì)數(shù)據(jù)庫查詢的接口函數(shù),這樣以后相似的操作只要調(diào)用這個接口就可以了。這樣避免了以后可能發(fā)生的大量的代碼重復(fù)的操作,也就達(dá)到了代碼復(fù)用的目的。
  • 定義自己對模板工具的包裝函數(shù),以后調(diào)用的時候就不用管模板工具的使用問題了,只有往自己的包裝函數(shù)里面塞數(shù)就可以了。
  • 基礎(chǔ)函數(shù)已經(jīng)ok了,開始輕松的頁面實(shí)現(xiàn)和模板的處理了。
      我們現(xiàn)在就開始設(shè)計(jì)一個簡單的系統(tǒng),看看我是怎么一步一步地實(shí)現(xiàn)一個“最簡單的文章的發(fā)布系統(tǒng)”的,當(dāng)然只是我模擬的一個簡單的項(xiàng)目,實(shí)際中一個項(xiàng)目可能比這要復(fù)雜的多。
    一、分析我的案例:
    呵呵,這個客戶項(xiàng)目好簡單的啊,幸福ing..........
    list1.php:有三個文章列表和一個按鈕,“php開發(fā)文章列表”“php開發(fā)熱點(diǎn)文章列表”“asp開發(fā)最新文章”“添加新文章”
    list2.php:有2個文章列表“asp開發(fā)文章列表”“asp開發(fā)熱點(diǎn)文章列表”
    new.php:一個添加文章的表單的頁面
    add.php: 處理new.php的表單的頁面
    view.php: 文章察看的頁面
    二、分析功能
    “php開發(fā)文章列表”“asp開發(fā)文章列表”-------按文章的發(fā)布順序,倒序排列顯示,每頁顯示5篇文章
    “php開發(fā)熱點(diǎn)文章列表”“asp開發(fā)熱點(diǎn)文章列表”-------按文章的點(diǎn)擊察看次數(shù)排序顯示文章,顯示3篇文章
    “asp開發(fā)最新文章”按文章的發(fā)布順序,倒序排列顯示,顯示3篇文章
    “添加新文章”------一個文章的發(fā)布功能, 包括文章標(biāo)題/作者/內(nèi)容
    “文章察看”---------顯示某篇文章內(nèi)容
    綜合的看一下,對功能進(jìn)行分類包括:
    1、文章列表:正常的分頁列表、按點(diǎn)擊數(shù)列表、按發(fā)布順序的列表
    2、文章發(fā)布:一個表單的輸入和處理
    3、文章察看:讀取顯示文章內(nèi)容
    呵呵,功能的確是太簡單了些。
    三、設(shè)計(jì)數(shù)據(jù)庫:
    數(shù)據(jù)庫名:cmstest
    數(shù)據(jù)表:
    CREATE TABLE `article` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `title` VARCHAR( 100 ) NOT NULL ,
    `content` TEXT NOT NULL ,
    `datetime` DATETIME NOT NULL ,
    `clicks` INT( 11 ) ,
    `pid` TINYINT( 2 ) NOT NULL ,
    PRIMARY KEY ( `id` )
    );
    CREATE TABLE `cat` (
    `cid` TINYINT( 2 ) NOT NULL ,
    `cname` VARCHAR( 20 ) NOT NULL ,
    PRIMARY KEY ( `cid` )
    );
    ------------------------------
    article表是文章內(nèi)容表,
    ----------------------------
    `id` 文章編號
    `title` 文章標(biāo)題
    `content` 文章內(nèi)容
    `datetime` 發(fā)布時間
    `clicks` 點(diǎn)擊數(shù)
    `pid` 分類表號
    ------------------------------
    cat表是文章的類別表
    ----------------------------
    `cid` 分類表號
    `cname` 分類名稱
    ----------------------------
    上面是表的數(shù)據(jù)庫結(jié)構(gòu),光有了這些還不夠,還要有數(shù)據(jù)
    INSERT INTO `cat` VALUES(1, "php開發(fā)"),(2, "asp開發(fā)");
    INSERT INTO `article` VALUES(1, "php開發(fā)1", "php開發(fā)1內(nèi)容", "2004-8-1 1:1:1", 0, 1);
    INSERT INTO `article` VALUES(2, "php開發(fā)2", "php開發(fā)2內(nèi)容", "2004-8-2 1:1:1", 0, 1);
    INSERT INTO `article` VALUES(3, "php開發(fā)3", "php開發(fā)3內(nèi)容", "2004-8-3 1:1:1", 4, 1);
    INSERT INTO `article` VALUES(4, "php開發(fā)4", "php開發(fā)4內(nèi)容", "2004-8-4 1:1:1", 3, 1);
    INSERT INTO `article` VALUES(5, "php開發(fā)5", "php開發(fā)5內(nèi)容", "2004-8-5 1:1:1", 2, 1);
    INSERT INTO `article` VALUES(6, "php開發(fā)6", "php開發(fā)6內(nèi)容", "2004-8-6 1:1:1", 1, 1);
    INSERT INTO `article` VALUES(7, "php開發(fā)7", "php開發(fā)7內(nèi)容", "2004-8-7 1:1:1", 0, 1);
    INSERT INTO `article` VALUES(8, "jsp開發(fā)1", "jsp開發(fā)1內(nèi)容", "2004-8-1 1:1:1", 0, 2);
    INSERT INTO `article` VALUES(9, "jsp開發(fā)2", "jsp開發(fā)2內(nèi)容", "2004-8-2 1:1:1", 0, 2);
    INSERT INTO `article` VALUES(10, "jsp開發(fā)3", "jsp開發(fā)3內(nèi)容", "2004-8-3 1:1:1", 4, 2);
    INSERT INTO `article` VALUES(11, "jsp開發(fā)4", "jsp開發(fā)4內(nèi)容", "2004-8-4 1:1:1", 3, 2);
    INSERT INTO `article` VALUES(12, "jsp開發(fā)5", "jsp開發(fā)5內(nèi)容", "2004-8-5 1:1:1", 2, 2);
    INSERT INTO `article` VALUES(13, "jsp開發(fā)6", "jsp開發(fā)6內(nèi)容", "2004-8-6 1:1:1", 1, 2);
    INSERT INTO `article` VALUES(14, "jsp開發(fā)7", "jsp開發(fā)7內(nèi)容", "2004-8-7 1:1:1", 0, 2);
    這樣我們的數(shù)據(jù)庫就設(shè)計(jì)完了。接下來就開始涉及到具體的實(shí)現(xiàn)了。
    四、設(shè)計(jì)config.inc.php文件
    這個文件用來設(shè)置一些web上通用的數(shù)據(jù)信息和一些參數(shù),其他的具體的實(shí)現(xiàn)頁面都通過這個頁面獲取需要的數(shù)據(jù),下面是配置的清單
    //數(shù)據(jù)庫設(shè)置
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', '');
    define('DB_HOST', 'localhost');
    define('DB_NAME', 'cmstest');
    define('DB_PCONNECT', true);
    // web的基本路經(jīng)設(shè)置
    define('CMS_ROOT', 'C:/Apache2/htdocs/cmstest/');
    define('CMS_SRCPATH', CMS_ROOT.'src/');
    //smarttemplate 模板解析工具的設(shè)置
    define('SMART_REUSE_CODE', false);
    define('SMART_TEMPLATE_DIR', CMS_ROOT.'smart/template/');
    define('SMART_TEMP_DIR', CMS_ROOT.'smart/temp/');
    define('SMART_CACHE_DIR', CMS_ROOT.'smart/cache/');
    define('SMART_CACHE_LIFETIME', 100);
    require_once(
    CMS_SRCPATH . 'lib/smarttemplate/class.smarttemplate.php');
    //要包含的基礎(chǔ)文件,里面都是一些基本的函數(shù)
    require_once CMS_SRCPATH.'MysqlUtil.php';
    require_once
    CMS_SRCPATH.'ArticleUtil.php';
    require_once
    CMS_SRCPATH.'CoreUtil.php';
    require_once
    CMS_SRCPATH.'ParseTpl.php';
    //session 控制
    session_cache_limiter('private_no_expire');
    session_start();
    ?>

      其中的 define('CMS_ROOT', 'C:/Apache2/htdocs/cmstest/'); 路經(jīng)根據(jù)自己apach的web路經(jīng)來改(參照最開始介紹文件夾結(jié)構(gòu)的地方改)。
    五、制作功能接口(1)
      首先對  mysql 數(shù)據(jù)庫函數(shù)進(jìn)行包裝,簡化對數(shù)據(jù)庫操作,網(wǎng)上有很多這樣的開源的類。但是這里我個人根據(jù)自己的需求和習(xí)慣,自己對 mysql 的函數(shù)進(jìn)行了包裝,寫得好壞就先不管了。這個地方簡單的看一下就可以了,不同的包裝的類操作是不同的,而且這里的主要目的是理解這套“架構(gòu)”,不用太扣代碼。
    -------MysqlUtil.php--------
    (){
        global
    $cnn;
       
    $cnn = (DB_PCONNECT? mysql_pconnect(DB_HOST, DB_NAME, DB_PASSWORD):
       
    mysql_connect(DB_HOST, DB_NAME, DB_PASSWORD)) or
        die(
    '數(shù)據(jù)庫連接錯誤');
       
    mysql_select_db(DB_NAME, $cnn) or die('數(shù)據(jù)庫選擇錯誤');
       
    mysql_query("SET AUTOCOMMIT=1");
    }
    function &
    dbQuery($sql){
        global
    $cnn;
       
    $rs = &mysql_query($sql, $cnn);
        while(
    $item=mysql_fetch_assoc($rs)){
            
    $data[] = $item;
        }
        return
    $data;
    }
    function &
    dbGetRow($sql){
        global
    $cnn;
       
    $rs = mysql_query($sql) or die('sql語句執(zhí)行錯誤');
        if(
    mysql_num_rows($rs)>0)
        return
    mysql_fetch_assoc($rs);
        else
        return
    null;
    }
    function
    dbGetOne($sql, $fildName){
       
    $rs = dbGetRow($sql);
        return
    sizeof($rs)==null? null: (isset($rs[$fildName])? $rs[$fildName]: null);
    }
    function &
    dbPageQuery($sql, $page=1, $pageSize=20){
        if(
    $page===null) return dbQuery($sql);
       
    $countSql = preg_replace('|SELECT.*FROM|i','SELECT COUNT(*) count FROM', $sql);
       
    $n = (int)dbGetOne($countSql, 'count');
       
    $data['pageSize'] = (int)$pageSize;
       
    $data['recordCount'] = $n;
       
    $data['pageCount'] = ceil($data['recordCount']/$data['pageSize']);
       
    $data['page'] = $data['pageCount']==0? 0: ((int)$page);
       
    $data['page'] = $data['page']>$data['pageCount']? $data['pageCount']:$data['page'];
       
    $data['isFirst'] = $data['page']>1? false: true;
       
    $data['isLast'] = $data['page'];
       
    $data['start'] = ($data['page']==0)? 0: ($data['page']-1)*$data['pageSize']+1;
       
    $data['end'] = ($data['start']+$data['pageSize']-1);
       
    $data['end'] = $data['end']>$data['recordCount']? $data['recordCount']: $data['end'];
       
    $data['sql'] = $sql.' LIMIT '.($data['start']-1).','.$data['pageSize'];
       
    $data['data'] = &dbQuery($data['sql']);
        return
    $data;
    }
    function
    dbExecute($sql){
        global
    $cnn;
       
    mysql_query($sql, $cnn) or die('sql語句執(zhí)行錯誤');
        return
    mysql_affected_rows($cnn);
    }
    function
    dbDisconnect(){
        global
    $cnn;
       
    mysql_close($cnn);
    }
    function
    sqlGetOneById($table, $field, $id){
        return
    "SELECT * FROM $table WHERE $field=$id";
    }
    function
    sqlMakeInsert($table, $data){
       
    $t1 = $t2 = array();
        foreach(
    $data as $key=>$value){
            
    $t1[] = $key;
            
    $t2[] = "'".addslashes($value)."'";
        }
        return
    "INSERT INTO $table (".implode(",",$t1).") VALUES(".implode(",",$t2).")";
    }
    function
    sqlMakeUpdateById($table, $field, $id, $data){
       
    $t1 = array();
        foreach(
    $data as $key=>$value){
            
    $t1[] = "$key='".addslashes($value)."'";
        }
        return
    "UPDATE $table SET ".implode(",", $t1)." WHERE $field=$id";
    }
    function
    sqlMakeDelById($table, $field, $id){
        return
    "DELETE FROM $table WHERE $field=$id";
    }
    ?>
    五、制作功能接口(2)
    下面來正式的看看,我們共要實(shí)現(xiàn)的功能進(jìn)行的包裝
    ------------ArticleUtil.php----------------
    //顯示文章列表的函數(shù)
    //getArticleList(文章類別, 排序方法, 當(dāng)前顯示第幾頁, 每頁顯示幾條)
    function getArticleList($catId, $order, $page, $pageSize){
       
    $sql = "SELECT * FROM article WHERE pid=$catId ORDER BY $order";
        return
    dbPageQuery($sql, $page, $pageSize);
    }
    //查詢某個文章的內(nèi)容
    //getArticle(文章編號)
    function getArticle($id){
       
    $sqlUpdate = "UPDATE article SET clicks=clicks+1 WHERE id=$id";
       
    dbExecute($sqlUpdate);
       
    $sql = "SELECT * FROM article WHERE art_id=$id";
        return
    dbGetRow($sql);
    }
    //添加文章
    //addArticle(文章內(nèi)容數(shù)組)
    function addArticle($data){
       
    $sql = sqlMakeInsert('article', $data);
        return
    dbExecute($sql);
    }
    ?>
    這段代碼是不是就簡單多了?這就是自己對mysql函數(shù)進(jìn)行包裝的好處!
    下面來研究一下他們是怎么實(shí)現(xiàn)我們的功能的呢。
    “php開發(fā)文章列表”--------getArticleList(1, "id DESC", $page, 5)
    “asp開發(fā)文章列表”--------getArticleList(2, "id DESC", $page, 5)
    “php開發(fā)熱點(diǎn)文章列表”----getArticleList(1, "clicks DESC, id DESC", 1, 3)
    “asp開發(fā)熱點(diǎn)文章列表”----getArticleList(2, "clicks DESC, id DESC", 1, 3)
    “asp開發(fā)最新文章”--------getArticleList(2, "id DESC", 1, 3)
    “添加新文章”-------------addArticle($data)
    “察看文章”---------------getArticle($id)
    六、對smarttemplate類進(jìn)行包裝(革命尚未成功,同志仍須努力)
    具體的smarttemplate的使用這里就不講了,不然口水講沒了,都講不完。下面這個是具體的對包裝函數(shù)
    -------------ParseTpl.php----------------
    ){
       
    $page = new SmartTemplate($viewFile);
        foreach(
    $data as $key=>$value){
            if(isset(
    $value[data])){
                
    $page->assign($key, $value[data]);
                unset(
    $value[data]);
                
    $page->assign($key."_page", $value);
            } else {
                
    $page->assign($key, $value);
            }
        }
       
    $page->output();
    }
    ?>
    七:文章列表察看頁面實(shí)現(xiàn)和模板處理(萬里長征的最后一步)
    先來看看頁面list1的實(shí)現(xiàn),在list1里面分頁用了一個page.js文件,這個文件是自己給自己寫的一個js分頁的函數(shù),挺好用的
    ---------------page.js---------------
    //--------共 20 條記錄,當(dāng)前 86/99 頁 [1]... [82] [83] [84] [85] [86] [87] [88] [89] [90] ...[99] GO-------------------
    //recordCount = 20;
    //show = 20
    //pageShow = 11;
    //pageCount = 100;
    //pageNow = 86;
    //pageStr = "?page=_page_";
    //document.write(showListPage(recordCount, show, pageCount, pageNow, pageStr));
    function showListPage(recordCount, show, pageShow, pageCount, pageNow, pageStr){
        if(pageCount'+recordCount+' 條記錄,當(dāng)前 '+pageNow+'/'+pageCount+' 頁 ';
        if(pageCount
        if(startHave){
            startStr = " [1]... ";
            str += startStr;
        }
        for(i=startNum; i" + i + "] ";
        }
        if(endHave){
            endStr = " ...[" + pageCount + "] ";
            str += endStr;
        }
        return str;
    }
    --------------list1.htm----------------
    添加新文章
    php開發(fā)文章
    {id}--{title}
    recordCount = {recordCount}; //總記錄數(shù)
    show = {pageSize}; //每頁顯示的記錄數(shù)量
    pageShow = 10; //每頁顯示的分頁連接數(shù)量
    pageCount = {pageCount}; //總頁數(shù)
    pageNow = {page}; //當(dāng)前頁數(shù)
    pageStr = "?page=_page_"; //頁面連接
    document.write(showListPage(recordCount, show, pageShow, pageCount, pageNow, pageStr));
    php開發(fā)熱點(diǎn)文章
    {id}--{title}
    asp開發(fā)最新文章
    {id}--{title}
    --------------list1.php----------------
    ;
    dbConnect();
    $data = array();
    $data[phplist] = getArticleList(1, "id DESC", (int)$_GET[page], 5);
    $data[phphotlist] = getArticleList(1, "clicks DESC, id DESC", 1, 3);
    $data[aspnewlist] = getArticleList(2, "id DESC", 1, 3);
    dbDisconnect();
    renderTpl('list1.htm', $data);
    ?>
    運(yùn)行的效果怎么樣,是不是實(shí)現(xiàn)了要求的功能呢。現(xiàn)在我們再做一下改動,在里面加上“asp開發(fā)熱點(diǎn)文章列表”,實(shí)現(xiàn)代碼如下
    --------------list1.htm----------------
    添加新文章
    php開發(fā)文章
    {id}--{title}
    recordCount = {recordCount}; //總記錄數(shù)
    show = {pageSize}; //每頁顯示的記錄數(shù)量
    pageShow = 10; //每頁顯示的分頁連接數(shù)量
    pageCount = {pageCount}; //總頁數(shù)
    pageNow = {page}; //當(dāng)前頁數(shù)
    pageStr = "?page=_page_"; //頁面連接
    document.write(showListPage(recordCount, show, pageShow, pageCount, pageNow, pageStr));
    php開發(fā)熱點(diǎn)文章
    {id}--{title}
    asp開發(fā)最新文章
    {id}--{title}
    asp熱點(diǎn)文章
    {id}--{title}
    --------------list1.php----------------
    ;
    dbConnect();
    $data = array();
    $data[phplist] = getArticleList(1, "id DESC", (int)$_GET[page], 5);
    $data[phphotlist] = getArticleList(1, "clicks DESC, id DESC", 1, 3);
    $data[aspnewlist] = getArticleList(2, "id DESC", 1, 3);
    $data[asphotlist] = getArticleList(2, "clicks DESC, id DESC", 1, 3);
    dbDisconnect();
    renderTpl('list1.htm', $data);
    ?>
      仔細(xì)觀察一下前后的區(qū)別,list1.php里面只是簡單的加入了一行的代碼,就實(shí)現(xiàn)這個改動,感覺怎么樣。渴遣皇浅壓唵。
    其實(shí)這種設(shè)計(jì)模式的好處還不只是這點(diǎn):
    1、可以把程序的核心代碼隔離開管理,便于以后程序的管理維護(hù)
    2、對于程序的可擴(kuò)展性也很好,假設(shè)list1.php中要加入產(chǎn)品列表,我是不是也可以這么做呢?把對產(chǎn)品的管理也寫成統(tǒng)一的數(shù)據(jù)庫操作接口,然后簡單的修改模板文件加入產(chǎn)品列表部分,最后在list1.php中加入一行函數(shù)調(diào)用的代碼,就可以實(shí)現(xiàn)。
    3、代碼復(fù)用,如果您是做中小型企業(yè)網(wǎng)站的,那這么做對您的好處是最大的,因?yàn)檫@種類型的網(wǎng)站的設(shè)計(jì)結(jié)構(gòu)幾乎是一樣的,您可能只需要更改一下模板的樣式,就可以賺到鈔票了。
      這么看來這種模式是不是給您帶來了很多的好處呢?
    -----------lsit2.htm---------------
    添加新文章
    asp開發(fā)文章
    {id}--{title}
    recordCount = {recordCount}; //總記錄數(shù)
    show = {pageSize}; //每頁顯示的記錄數(shù)量
    pageShow = 10; //每頁顯示的分頁連接數(shù)量
    pageCount = {pageCount}; //總頁數(shù)
    pageNow = {page}; //當(dāng)前頁數(shù)
    pageStr = "?page=_page_"; //頁面連接
    document.write(showListPage(recordCount, show, pageShow, pageCount, pageNow, pageStr));
    asp熱點(diǎn)文章
    {id}--{title}
    -----------lsit2.php---------------
    ;
    dbConnect();
    $data = array();
    $data[asplist] = getArticleList(2, "id DESC", (int)$_GET[page], 5);
    $data[asphotlist] = getArticleList(2, "clicks DESC, id DESC", 1, 3);
    dbDisconnect();
    renderTpl('list2.htm', $data);
    ?>
    --------view.htm--------------
    編號:{id}
    標(biāo)題:{title}
    內(nèi)容:{content}
    --------view.php------------------
    ;
    dbConnect();
    $data = array();
    $data[content] = getArticle((int)$_GET[id]);
    dbDisconnect();
    renderTpl('view.htm', $data);
    ?>
    八:文章添加實(shí)現(xiàn)和模板處理(萬里長征的再來一步)
    ---------------new.htm-----------
    標(biāo)題:
    內(nèi)容:
        
    ---------------new.php------------
    ;
    renderTpl('new.htm', array());
    ?>
    ---------------CoreUtil.php--------------
    ){
       
    $keys = array_keys($data);
        foreach(
    $keys as $key){
            
    $data[$key] = addslashes(htmlspecialchars(trim($data[$key])));
            if(
    $data[$key]==null) $data[$key] = "$key default";
        }
    }
    ?>
    ---------------add.htm------------
    {content}
    ---------------add.php------------
    ;
    dbConnect();
    $data = action();
    doPostVar($data);
    addArticle($data);
    $result[success][content] = "文章添加成功";
    dbDisconnect();
    renderTpl('add.htm', $result);
    function
    action(){


    本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/14986/showart_95657.html
  • 您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規(guī)則 發(fā)表回復(fù)

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報(bào)專區(qū)
    中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP