Board logo

标题: php模板技术[转] [打印本页]

作者: 我不是鱼    时间: 2006-9-27 13:24     标题: 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文件 --------

[复制到剪切板]
CODE:
<?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文件-------------------

[复制到剪切板]
CODE:
<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文件-------------------

[复制到剪切板]
CODE:
<TR bgcolor="#ffffff" align=center
  <
TD><a href="content.php?id={成员ID}">{姓名}</a></TD><TD>{性别}</TD><TD>{年龄}</TD><TD>{email}</TD
</
TR> ;

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

[复制到剪切板]
CODE:
<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文件--------------------------

[复制到剪切板]
CODE:
<?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文件 ---------------

[复制到剪切板]
CODE:
<?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); 
?> ;



作者: bridge2006    时间: 2006-10-9 13:23


作者: yefeng2651    时间: 2006-10-18 21:16

谢谢,试试什么效果。回头 研究。
作者: freeren    时间: 2007-5-12 10:55

谢谢好心的版主,真的是又学了一些了!
作者: 奇将射天狼    时间: 2007-7-26 14:30

感谢主!非常好。
作者: kegui1981    时间: 2007-8-6 09:46     标题: 回复 #1 我不是鱼 的帖子

顶了
作者: ocool    时间: 2007-8-21 18:04


作者: shinfly    时间: 2007-8-29 09:04

我试了一下可以显示中文的时候会变成??的?
作者: blankyao    时间: 2007-8-31 20:24     标题: 回复 #8 shinfly 的帖子

代码没设置好吧?
作者: yoonix    时间: 2007-9-24 17:12     标题: 回复

版主,辛苦了!!!
非常感谢,正在寻找中,正需要阿!!!
作者: wwwwww    时间: 2007-10-8 09:32

学习
作者: wolf22372    时间: 2007-11-18 21:43     标题: 谢谢

谢谢!
作者: wolf22372    时间: 2007-11-18 21:46     标题: 我是新手 大家多多指教


作者: guoxianghui    时间: 2007-11-28 11:55     标题: meng


作者: liuguoqing    时间: 2007-11-28 15:45     标题: 感谢

感谢楼主
支持开源!!!!!!!!!
作者: olive    时间: 2007-12-20 15:44

谢谢好心的版主
作者: edisonwu    时间: 2008-2-22 15:25

好东西
作者: liuguoqing    时间: 2008-2-29 15:57

不错
作者: xhq6880    时间: 2008-3-8 17:58

好人有好报的
作者: halleck    时间: 2008-4-1 05:46


作者: burt    时间: 2008-4-11 00:43     标题: 回复 #1 我不是鱼 的帖子

有一个地方欠妥,位于生/***成列表开始***/while循环之中,如果添加下列语句会更好“if($row[2]==1) $row[2]="男";        else $row[2]="女";”当然之前得修改数据库的属性为bool型。
作者: wanking    时间: 2008-5-22 09:53

好东西。
收下了
作者: andygz    时间: 2008-8-2 15:42

学习中,谢谢版主!
作者: adifly    时间: 2008-9-18 09:12

不懂!!這是做啥?
作者: coolboy0316    时间: 2008-12-18 18:48     标题: 楼主

真的很感谢你啊,我找了这么久终于找到了
作者: pcs1986    时间: 2009-9-7 18:48

bnhg
作者: haizeng    时间: 2009-12-4 11:32

好啊
作者: liandxuejiao    时间: 2009-12-22 09:52

看不懂也顶
作者: ah131421    时间: 2010-7-22 16:00     标题:

引用:
原帖由 我不是鱼 于 2006-9-27 13:24 发表
站点结构

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

代码:
-- 数据库: `test`
...

作者: zjkjxyying    时间: 2010-8-17 21:04     标题: 回复 1# 我不是鱼 的帖子

非常不错  模板技术的应用 学习来看看还是 很不错的 跟 ASP 以及其他模板技术差不多 对于学习PHP 来讲 很不错 如果懂ASP 的人 这个很容易理解
作者: phobos    时间: 2010-8-20 05:21     标题: 版主,编译后出现,怎样解决?我是新手,请帮助

Notice: Use of undefined constant p - assumed 'p' in D:\php\www\test\index.php on line 8

Notice: Undefined index: p in D:\php\www\test\index.php on line 8

Warning: file_get_contents(templet/list.htm) [function.file-get-contents]: failed to open stream: No such file or directory in D:\php\www\test\includes\class.inc on line 19

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in D:\php\www\test\index.php on line 16
作者: zzruifa    时间: 2011-1-6 17:23

先保存了 以后好好研究一下
作者: a123101    时间: 2011-5-19 20:58

感谢楼主!非常好。
作者: hztuomao    时间: 2011-6-30 11:18

恩 看看在顶。
作者: sjzbykj    时间: 2011-7-18 17:47

太专业了!!!
[url=http://www.anhua-gabion.com]gabion[url]
作者: sjzbykj    时间: 2011-7-18 17:48

完美!!!!
gabion
作者: dyioo    时间: 2011-12-7 13:27     标题: 路过了,学习了

不错哦,我来学习了,有空去我的网站看看www.dyioo.com
我的SEO博客:www.msgtu.com
作者: onicee    时间: 2011-12-11 14:39

现在努力学习PHP
作者: onicee    时间: 2011-12-12 10:35

乱码是怎么回事?????
作者: qa500.com    时间: 2012-1-28 19:56

好东西




欢迎光临 PHP爱好者论坛 (http://www.phpfans.net/bbs/) Powered by Discuz! 6.1.0