黃玲娜
摘 要: 在PHP開發(fā)環(huán)境中,Smarty模板是一種處于領(lǐng)先地位的主流模板,能高效的實現(xiàn)網(wǎng)站前臺和數(shù)據(jù)庫后臺之間的交互,將后臺數(shù)據(jù)庫中的數(shù)據(jù)信息呈現(xiàn)在前臺網(wǎng)頁上。Smarty模板將與數(shù)據(jù)庫的連接等操作封裝在類中,在以后的開發(fā)中只需要調(diào)用即可;利用PHP文件實現(xiàn)對數(shù)據(jù)庫的代碼控制,將對數(shù)據(jù)庫的訪問結(jié)果通過tpl模板文件顯示,這種做法使得代碼控制和頁面美工分離開來,開發(fā)過程更加清晰明了。
關(guān)鍵詞: PHP; Smarty; 網(wǎng)站開發(fā); 數(shù)據(jù)庫訪問
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2015)12-65-03
Connection and access database in the PHP+Smarty environment
Huang Lingna
(Wuxi City College of Vocational Technology, Jiangsu, Wuxi 214000, China)
Abstract: In PHP development environment, the Smarty template is a mainstream template which can realize the interaction between the front desk and the database. The data information in the background database is presented in the front page. Smarty template encapsulates the operations of connection with database and so on in the class, in the future development only need to call. The PHP file is used to achieve the code control of the database, the database access results are displayed through the TPL template file, this approach separates the code control and the page art, makes the development process more clear.
Key words: PHP; Smarty; Web site development; database access
0 引言
隨著電子商務(wù)的發(fā)展,越來越多的電商網(wǎng)站如雨后春筍般涌現(xiàn),用戶在網(wǎng)站上瀏覽商品信息,購買中意的商品,這種行為已經(jīng)越來越流行。當用戶在網(wǎng)站前臺瀏覽商品信息的時候,往往希望網(wǎng)站能以簡潔明了、方便直觀的形式展示各種商品,這就需要網(wǎng)站開發(fā)者在開發(fā)網(wǎng)站的過程中充分考慮到用戶的需求。
PHP語言是一種在服務(wù)器上運行的開發(fā)語言,是一種類似ASP的服務(wù)器端腳本語言[1],往往和超文本嵌入式標記語言共同使用來實現(xiàn)動態(tài)網(wǎng)站。PHP技術(shù)在存取數(shù)據(jù)和兼容性方面更具有競爭力,提供了一套比較完善的標準化數(shù)據(jù)庫接口[2]。
在網(wǎng)站開發(fā)過程中,PHP具有以下優(yōu)勢[3]。
⑴ 安全性高:PHP是開源軟件,具有公認的安全性能。
⑵ 跨平臺:支持幾乎所有的操作系統(tǒng)平臺以及多種Web服務(wù)器。
⑶ 支持廣泛的數(shù)據(jù)庫:支持多種主流與非主流的數(shù)據(jù)庫。
⑷ 執(zhí)行速度快:占用的系統(tǒng)資源少,因此執(zhí)行效率高。
⑸ 免費:可以為網(wǎng)站經(jīng)營者節(jié)省很大一部分開支。
⑹ 支持面向?qū)ο笈c過程:可向下兼容。
⑺ 內(nèi)嵌Zend加速引擎:性能穩(wěn)定快速。
Smarty模板由于具有強大的功能和快速的運行速度,在PHP眾多模板中一直處于領(lǐng)先地位。Smarty其實就是一種使用PHP編寫的PHP模板引擎,它將整個程序分為視圖(用戶界面)和邏輯控制(PHP代碼)。這樣使得修改程序和頁面美工分離開來,互不影響。Smarty運行速度極快;效率高;模板只需被解析一次,無需重復(fù);只需重新編譯一次修改過的模板文件[4]。Smarty可以整合ADODB技術(shù),在對數(shù)據(jù)庫的操作方面具有結(jié)構(gòu)清晰、簡單明了,使用方便的特點。在網(wǎng)站開發(fā)過程中, 使用PHP+Smarty+ADODB技術(shù)能高效的在網(wǎng)頁前臺與后臺數(shù)據(jù)庫之間進行數(shù)據(jù)的交互。
1 將Smarty模板的配置方法封裝到類
在實際開發(fā)過程中,為了更有效的利用程序,往往將Smarty模板的配置方法封裝在一個類中,在后期使用中只需要實例化該類,就可以調(diào)用定義好的方法。同時這種做法更有利于應(yīng)用程序的可移植性,即使更換了服務(wù)器,也不需要更改絕對路徑。Smarty的配置文件往往包括以下三個文件。
⑴ System.class.inc.php:定義數(shù)據(jù)庫的連接、操作和分頁等類。
⑵ System.inc.php:完成對System.class.inc.php中定義的類的實例化操作。
⑶ System.smarty.inc.php:定義Smarty的環(huán)境配置類,主要是對四個路徑的定義。
2 通過PHP文件實現(xiàn)PHP代碼控制
PHP文件往往被用作對應(yīng)用程序的邏輯控制,可以在PHP文件中加載System.inc.php文件以方便在后續(xù)使用預(yù)先定義好的類,同時在PHP文件中實現(xiàn)對數(shù)據(jù)庫的查詢,得到查詢結(jié)果集,并將結(jié)果存入模板變量,指定輸出tpl模板。
例如想從數(shù)據(jù)庫中分頁查詢商品信息,要求每頁顯示6條記錄,其代碼設(shè)置如下:
<?php
header("Content-type:text/html;charset=UTF-8");
include_once("system/system.inc.php");
$zx2=$seppage->ShowDate("select * from
tb_shangpin A,tb_type B where
A.typeid=B.typeid ORDER BY addtime desc",
$conn,6,$page);
//調(diào)用分頁類中的分頁函數(shù)實現(xiàn)分頁查詢
$smarty->assign('zx2',$zx2);
//定義模板變量用來記錄每頁顯示的具體信息
$smarty->assign('zx2_page',$seppage->ShowPage
("產(chǎn)品","個",$_GET['page_type']));
?>
3 通過tpl文件遍歷輸出數(shù)據(jù)庫數(shù)據(jù)
Tpl模板文件中包含了頁面的所有靜態(tài)元素,如想在文件中加入注釋、變量、函數(shù)都需要使用定界符。換句話說,模板文件中不允許直接出現(xiàn)PHP代碼。
在模板中可以使用{section}循環(huán)控制遍歷輸出查詢結(jié)果,每行輸出一條記錄,每頁顯示6條記錄。效果圖片如圖1所示。
{section name=new_id loop=$zr2}
{/section}