推荐php模板技术[转]


Posted in PHP onJanuary 04, 2007

站点结构

代码:
站点
  ┗includes
       ┗class.inc
  ┣templet
       ┗index.htm
       ┣list.htm
       ┗content.htm
  ┣index.php
  ┗content.php
库结构

代码:
-- 数据库: `test`
-- 表的结构 `test`
CREATE TABLE `test` (
  `id` smallint(3) NOT NULL auto_increment,
  `name` varchar(10) NOT NULL default '',
  `sex` enum('男','女') NOT NULL default '男',
  `age` smallint(2) NOT NULL default '0',
  `email` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
--------------- class.inc文件 -------- 

<?php    
 class mycon{     
    private $myhost;    
    private $myuser;    
    private $mypwd;    
    function mycon($host="localhost",$user="root",$pwd=""){    
      $this->myhost = $host;    
      $this->myuser = $user;    
      $this->mypwd = $pwd;    
    }    
    function connect(){    
      return mysql_connect($this->myhost,$this->myuser,$this->mypwd);    
    }    
  }      class templet{    
     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{    
            $an = count($tags);    
            for($i=0;$i<$an;$i++){    
               $tags[$i] = "|{".$tags[$i]."}|";    
            }    
           return preg_replace($tags,$vals,$this->source_file);     
        }    
     }    
  }    
?>
 

----------------index.htm文件------------------- 

<HTML>    
<HEAD>    
<TITLE>首页</TITLE>    
</HEAD>    
<BODY style="font-size:12px">    
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="1" bgcolor=#000000 style="font-size:12px">    
    <caption>成员列表</caption>    
    <TR bgcolor="#ffffff" align=center>    
      <TD width=25%>姓名</TD>    
      <TD width=25%>性别</TD>    
      <TD width=25%>年龄</TD>    
      <TD width=25%>email</TD>    
    </TR>    
    {所有列表}    
    <TR bgcolor="#ffffff">    
      <TD colspan=2>共有{总条数}条记录,显示{每页条数}条/页</TD>    
      <TD colspan=2 align=right>{分页}</TD>    
    </TR>    
</TABLE>    
</BODY>    
</HTML> 

------------------list.htm文件------------------- 

<TR bgcolor="#ffffff" align=center>    
  <TD><a href="content.php?id={成员ID}">{姓名}</a></TD><TD>{性别}</TD><TD>{年龄}</TD><TD>{email}</TD>    
</TR>
 

-------------------content.htm文件----------------------- 

<HTML>    
<HEAD>    
<TITLE>成员信息</TITLE>    
</HEAD>    
<BODY style="font-size:12px">    
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="1" bgcolor=#000000 style="font-size:12px">    
    <caption>成员信息</caption>    
    <TR bgcolor="#ffffff">    
      <TD width=60>姓名</TD><TD>{姓名}</TD></TR>    
    <TR bgcolor="#ffffff">    
      <TD>性别</TD><TD>{性别}</TD></TR>    
    <TR bgcolor="#ffffff">    
      <TD>年龄</TD><TD>{年龄}</TD></TR>    
    <TR bgcolor="#ffffff">    
      <TD>email</TD><TD>{email}</TD></TR>    
</TABLE>    
</BODY>
 

----------------index.php文件-------------------------- 

<?php     
  include("includes/class.inc");     
  $tmpl =new templet;     
  $mycon =new mycon;     
  $con = $mycon->connect();     
  mysql_select_db("test",$con);     
  $lim = 20; //每页显示行数     
  $p = ($_GET[p]) ? $_GET[p] : 1;  //当前页号       /***** 生成列表开始 *****/     
  $lists = "";     
  $tmpl->get_file("templet/list.htm");     
  $tags = array("成员ID","姓名","性别","年龄","email");  //应与表字段同顺序     
  $rs = mysql_query("select * from test order by id desc limit ".($p-1)*$lim.",$lim");     
  while($row=mysql_fetch_row($rs)){     
     $lists .= $tmpl->parse($tags,$row);     
  }     
   /***** 生成列表完成, 分页开始 *****/     
  $tmpl->get_file("templet/index.htm");     
  $rn = @mysql_result(mysql_query("select count(id) from test"),0);  //总记录数     
  $ps = ceil($rn/$lim);   //总页数     
  $pagination = "<a href='?p=1'>首页</a> ";     
  if($p>1) $pagination .= "<a href='?p=".($p-1)."'>";     
  else $pagination .= "<font color='#777777'>";     
  $pagination .= "上一页</font></a> ";     
  if($p<$ps) $pagination .= "<a href='?p=".($p+1)."'>";     
  else $pagination .= "<font color='#777777'>";     
  $pagination .= "下一页</font></a> <a href='?p={$ps}'>尾页</a>  ";     
   /***** 分页完成, 生成页面开始 *****/     
   $tags = array("所有列表","总条数","每页条数","分页");     
   $vals = array($lists,$rn,$lim,$pagination);     
   echo $tmpl->parse($tags,$vals);     
?> 

---------------- content.php文件 --------------- 

<?php    
  include("includes/class.inc");    
  $tmpl =new templet;    
  $mycon =new mycon;    
  $con = $mycon->connect();    
  mysql_select_db("test",$con);    
  $tmpl->get_file("templet/content.htm");    
  $rs = mysql_query("select * from test where id=$_GET[id]");    
  $row=@mysql_fetch_row($rs);    
  unset($row[0]); //去掉表中读出的多余字段,对齐替换项,或在SELECT语句中列表字段     
  $tags = array("姓名","性别","年龄","email");     
  echo $tmpl->parse($tags,$row);    
?> 

PHP 相关文章推荐
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
php导出excel格式数据问题
Mar 11 PHP
分享一个php 的异常处理程序
Jun 22 PHP
php遍历数组的4种方法总结
Jul 05 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
PHP实现微信退款功能
Oct 02 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
Swoole扩展的6种模式深入详解
Mar 04 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 #PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 #PHP
URL Rewrite的设置方法
Jan 02 #PHP
DISCUZ 分页代码
Jan 02 #PHP
帖几个PHP的无限分类实现想法~
Jan 02 #PHP
PHP+MYSQL开发工具及资源收藏
Jan 02 #PHP
分享PHP入门的学习方法
Jan 02 #PHP
You might like
德生PL330的评价与改造
2021/03/02 无线电
php 验证码制作(网树注释思想)
2009/07/20 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
python paramiko实现ssh远程访问的方法
2013/12/03 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
Python中生成Epoch的方法
2017/04/26 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
Python 使用type来定义类的实现
2019/11/19 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
迟到检讨书1000字
2014/01/15 职场文书
网络信息安全承诺书
2014/03/26 职场文书
美化环境标语
2014/06/20 职场文书
护士求职信
2014/07/05 职场文书
辞职信格式模板
2015/02/27 职场文书
公司文体活动总结
2015/05/07 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
Python装饰器的练习题
2021/11/23 Python