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, [email protected]');INSERT INTO `test` VALUES (2, 'dinahani', 'female', 29, [email protected]');INSERT INTO `test` VALUES (3, 'sam', 'male', 1, [email protected]');INSERT INTO `test` VALUES (4, 'girl', 'female', 0, [email protected]');
?
?
3.?代码
?
--------------- class.inc文件 --------
?
?
<?php class db{ private $host; private $user; private $pwd; function __construct($host='localhost',$user='root',$pwd='root'){ $this->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文件-------------------
?
?
?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Home Page</title>
Members List Name | Sex | Age | Email |
{all_lists} Total: {total_numbers}, Display {per_numbers}/page | {page} |
?
?
------------------list.htm文件-------------------
?
?
?
<tr bgcolor="#ffffff" align="center"> <td><a href="content.php?id=%7Bmid%7D">{name}</a></td> <td>{sex}</td> <td>{age}</td> <td>{email}</td> </tr>
?
?
-------------------content.htm文件-----------------------
?
?
?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Home Page</title>
Member Infos Name | {name} |
Sex | {sex} |
Age | {age} |
Email | {email} |
{back}
?
----------------index.php文件--------------------------
?
?
<?php include('includes/class.inc'); $tmpl = new template(); $db = new db(); $con = $db->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($pparse($tags,$vals); ?>
?
---------------- content.php文件 ---------------
?
?
<?php include('includes/class.inc'); $tmpl = new template(); $db = new db(); $con = $db->connect(); mysql_select_db('test',$con); $tmpl->get_file('templates/content.htm'); $rs = mysql_query('select * from test where id='.$_GET['id']); [email protected]_fetch_row($rs); unset($row[0]); //去掉表中读出的多余字段,对齐替换项,或在SELECT语句中列表字段 $tags = array('name','sex','age','email','back'); $row[] = '<a href="index.php">Back</a>'; echo $tmpl->parse($tags,$row); ?>
?
?
?
finished
?
?
?
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn