40 1234
发新话题
打印

php模板技术[转]

php模板技术[转]

站点结构

代码:
站点
  ┗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> &nbsp;";  

   
/***** 分页完成, 生成页面开始 *****/  
   
$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); 
?> ;


TOP

TOP

谢谢,试试什么效果。回头 研究。

TOP

谢谢好心的版主,真的是又学了一些了!

TOP

感谢主!非常好。

TOP

回复 #1 我不是鱼 的帖子

顶了

TOP

TOP

我试了一下可以显示中文的时候会变成??的?

TOP

回复 #8 shinfly 的帖子

代码没设置好吧?

TOP

回复

版主,辛苦了!!!
非常感谢,正在寻找中,正需要阿!!!

TOP

 40 1234
发新话题