php模板技術 執行個體
1. 網站結構
?
?
網站
┗includes
? ?┗class.inc
┣templates
? ?┗index.htm
? ?┣list.htm
? ?┗content.htm
┣index.php
┗content.php
?
2.庫結構
?
?
-- -- Database: `test`-- -- ---------------------- -- Table structure for table `test`-- CREATE TABLE `test` ( `id` smallint(3) NOT NULL auto_increment, `name` varchar(10) NOT NULL default '', `sex` enum('male','female') NOT NULL default 'male', `age` smallint(2) NOT NULL default '0', `email` varchar(20) NOT NULL default '', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;-- -- Dumping data for table `test`-- INSERT INTO `test` VALUES (1, 'freshlove', 'male', 28, 'freshlove@gmail.com');INSERT INTO `test` VALUES (2, 'dinahani', 'female', 29, 'dinahani@gmail.com');INSERT INTO `test` VALUES (3, 'sam', 'male', 1, 'sam@gmail.com');INSERT INTO `test` VALUES (4, 'girl', 'female', 0, 'girl@gmail.com');
?
?
3.?代碼
?
--------------- class.inc檔案 --------
?
?
host = $host; $this->user = $user; $this->pwd = $pwd; } function connect(){ return mysql_connect($this->host,$this->user,$this->pwd); } } class template{ private $source_file; function get_file($filename){ $this->source_file = file_get_contents($filename); } function parse($tags,$vals){ if(!is_array($tags)) return preg_replace('|{'.$tags.'}|',$vals,$this->source_file); else{ foreach($tags as $row) $keys[] = '|{'.$row.'}|';return preg_replace($keys,$vals,$this->source_file); } } } ?>
?
?
?----------------index.htm檔案-------------------
?
?
?
Home Page
Members List
| Name |
Sex |
Age |
Email |
{all_lists}
| Total: {total_numbers}, Display {per_numbers}/page |
{page} |
?
?
------------------list.htm檔案-------------------
?
?
?
?
?
-------------------content.htm檔案-----------------------
?
?
?
Home Page
| {name} |
{sex} |
{age} |
{email} |
Member Infos
| Name |
{name} |
| Sex |
{sex} |
| Age |
{age} |
| Email |
{email} |
?
----------------index.php檔案--------------------------
?
?
connect(); mysql_select_db('test',$con); $limit = 20; //每頁顯示行數 $p = ($_GET['p']) ? $_GET['p'] : 1; //當前頁號 /***** 產生列表開始 *****/ $lists = ''; $tmpl->get_file('templates/list.htm'); $tags = array('mid','name','sex','age','email'); //應與表欄位同順序 $result = mysql_query('select * from test order by id desc limit '.($p-1)*$limit.','.$limit); while($row = mysql_fetch_row($result)) $lists .= $tmpl->parse($tags,$row); /***** 產生列表完成, 分頁開始 *****/ $tmpl->get_file('templates/index.htm'); $total = @mysql_result(mysql_query('select count(id) from test'),0); //總記錄數 $ps = ceil($total/$limit); //總頁數 $pagination = 'First Page '; if($p>1) $pagination .= ''; else $pagination .= ''; $pagination .= 'Prev '; if($p<$ps) $pagination .= ''; else $pagination .= ''; $pagination .= 'Next Last Page '; /***** 分頁完成, 產生頁面開始 *****/ $tags = array('all_lists','total_numbers','per_numbers','page'); $vals = array($lists,$total,$limit,$pagination); echo $tmpl->parse($tags,$vals); ?> ?
---------------- content.php檔案 ---------------
?
?
connect(); mysql_select_db('test',$con); $tmpl->get_file('templates/content.htm'); $rs = mysql_query('select * from test where id='.$_GET['id']); $row=@mysql_fetch_row($rs); unset($row[0]); //去掉表中讀出的多餘欄位,對齊替換項,或在SELECT語句中列表欄位$tags = array('name','sex','age','email','back'); $row[] = 'Back';echo $tmpl->parse($tags,$row); ?> ?
?
?
finished
?
?
?