请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 1987|回复: 11

[php] [原创]code与html分离,PHP中模板的使用 [复制链接]

wuleying 楼主

罗亮

超级版主 手机认证 

帖子
15895
体力
19488
威望
19
居住地
北京市 海淀区
发表于 2007-2-1 09:25:27 |显示全部楼层
写了一个简单的练习了下,使代码不再陷入烦人的HTML中,看着干净多了^_^

数据库结构:
其实也就一个表,你可以根据你的需要来设置字段,数据库名:lolooo,表名:wuleying(其实有没有数据库都可以完成我这个例子,不过数据库是为了以后扩展所做,在想加什么功能ING)我这里简单的设了6个字段,分别是:

  1. name   varchar  30
  2. sex    varchar  2
  3. age    int      10
  4. qq     int      10
  5. email  varchar  50
  6. info   varchar  255
复制代码


然后是模板页了(也就是纯html)
page1.html

 提示:您可以先修改部分代码再运行



page2

 提示:您可以先修改部分代码再运行



花括号里的内容就是要替换掉的,其实用别的符号也行,甚至不用符号都成(当然有可能会出错),不过用花括号比较普遍吧~

P.S.这两个页面我随便排了下版,很粗糙-_!!

然后是关键的了

function.php
  1. <?php
  2. //账号与密码设定
  3. $host = 'localhost';
  4. $user = 'root';
  5. $pass = '';
  6. $database = 'lolooo';


  7. //sql查询A(用于insert update delete)
  8. function sql_a($query)
  9. {
  10.         global $host,$user,$pass,$database;

  11.         $conn = @mysql_connect($host,$user,$pass);
  12.         @mysql_select_db($database,$conn);
  13.         $result = @mysql_query($query);

  14.         return $result;
  15. }

  16. //sql查询B(用于select)
  17. function sql_b($query)
  18. {
  19.         global $host,$user,$pass,$database;
  20.        
  21.         $conn = @mysql_connect($host,$user,$pass);
  22.         $result = @mysql_db_query($database,$query,$conn);
  23.         @mysql_data_seek($result,0);
  24.         while($row = @mysql_fetch_array($result))
  25.         {
  26.                 $output[] = $row;
  27.         }

  28.         @mysql_free_result($result);
  29.         @mysql_close($conn);

  30.         return $output;
  31. }


  32. //sql查询C(用于insert 且自动产生编号)
  33. function sql_c($query)
  34. {
  35.         global $host,$user,$pass,$database;
  36.        
  37.         $conn = @mysql_connect($host,$user,$pass);
  38.         @mysql_select_db($database,$conn);
  39.         $result = @mysql_query($query);
  40.         $result = @mysql_insert_id();
  41.         @mysql_close($conn);

  42.         return $result;
  43. }


  44. //解析网页,并且替换输出
  45. //$parser_array格式为:$array['key'] = value;
  46. function read_and_parser($filename,$parser_array)
  47. {
  48.         $handle = fopen($filename,'r');
  49.         $buffer = fread($handle,filesize($filename));
  50.         @fclose($buffer);

  51.         //开始查找替换
  52.         while(list($key,$value)=each($parser_array))
  53.         {
  54.                 $buffer = str_replace($key,$value,$buffer);//这一句是重点,把指定内容替换
  55.         }
  56.        
  57.         return $buffer;
  58. }

  59. ?>
复制代码



show.php
  1. <?php
  2. include_once('function.php');

  3. $sql = "select * from wuleying";

  4. $row = sql_b($sql);//执行查询

  5. if($_GET['style']==1)
  6. {
  7.         $page = 'page1.html';
  8. }
  9. else
  10. {
  11.         $page = 'page2.html';
  12. }

  13. //把从数据库里取出的数据存到$array这个数组里
  14. $array['{name}'] = $row[0][0];
  15. $array['{sex}'] = $row[0][1];
  16. $array['{age}'] = $row[0][2];
  17. $array['{qq}'] = $row[0][3];
  18. $array['{email}'] = $row[0][4];
  19. $array['{info}'] = $row[0][5];

  20. $output = read_and_parser($page,$array);//用自定义函数替换内容

  21. echo $output;//显示页面

  22. ?>
复制代码




OK,这就是最最最简单的模板套用(精简到不能再精简了),就是什么表现层与逻辑层分离吧(偶概念不清-_!!面壁去)

有时间再写,未完待续^_^

请高手指正不足,学习ING......

[ 本帖最后由 wuleying 于 2007-2-1 09:50 编辑 ]
西部数码顶级域名注册商39元抢注!

徐徐

银牌会员

帖子
1231
体力
5102
威望
24
发表于 2007-2-1 09:37:04 |显示全部楼层
银子加油哦哈哈
感觉不错的,这应该是最简单的模板应用吧,字符串替换,PHP不熟……
Simple,Natural,Actual
HotHear's BLOG
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

wuleying 楼主

罗亮

超级版主 手机认证 

帖子
15895
体力
19488
威望
19
居住地
北京市 海淀区
发表于 2007-2-1 09:43:42 |显示全部楼层

回复 #2 HotHeart 的帖子

嘿嘿,刚开始学着做,见笑了

使用道具 举报

帖子
156
体力
375
威望
0
发表于 2007-2-1 09:59:56 |显示全部楼层
替换也可以考虑用正则
万能建站工具-帝国CMS

使用道具 举报

BMWBMW 
帖子
3679
体力
3662
威望
0
居住地
湖北省 武汉市
发表于 2007-2-1 11:39:45 |显示全部楼层
银子怎么不学smarty?方便得多了

使用道具 举报

laohoo 

老胡

金牌会员

帖子
2993
体力
3172
威望
5
发表于 2007-2-1 14:03:45 |显示全部楼层
想骗分的 。嘻嘻。

用PHPLIB比你这好多了。

$R= NEW TEMPELATE()

SMARTY不适合小网站用。
Gonna miss freedom

使用道具 举报

wuleying 楼主

罗亮

超级版主 手机认证 

帖子
15895
体力
19488
威望
19
居住地
北京市 海淀区
发表于 2007-2-1 14:09:59 |显示全部楼层

回复 #6 laohoo 的帖子

晕,这就骗分了,刚开始学着做~~

另:你的签名与凌志的重了~~你个D版者

使用道具 举报

laohoo 

老胡

金牌会员

帖子
2993
体力
3172
威望
5
发表于 2007-2-1 14:10:55 |显示全部楼层
哈哈。这个不能算D啊。要不我改个
Gonna miss freedom

使用道具 举报

laohoo 

老胡

金牌会员

帖子
2993
体力
3172
威望
5
发表于 2007-2-1 14:12:10 |显示全部楼层
这签名没有人跟我一样了吧、
Gonna miss freedom

使用道具 举报

wuleying 楼主

罗亮

超级版主 手机认证 

帖子
15895
体力
19488
威望
19
居住地
北京市 海淀区
发表于 2007-2-1 14:16:19 |显示全部楼层

回复 #9 laohoo 的帖子

你丫版聊,小心班主毙了你

就此止住


另:PHP还得多请教~~

使用道具 举报

laohoo 

老胡

金牌会员

帖子
2993
体力
3172
威望
5
发表于 2007-2-1 14:18:11 |显示全部楼层
PHP的MVC:

小型网站用PHPLIB就不错。很简洁。也很方便

大型就SMARTY就很有远见了。呵呵

===========================
本人向来不畏强权
Gonna miss freedom

使用道具 举报

remain 

残缺

银牌会员

帖子
1221
体力
2368
威望
4
发表于 2007-2-1 14:23:22 |显示全部楼层
喜欢smarty+pear构建,正在学习中
我刚写完一个vim的tabs插件

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 13:15 , Processed in 0.176491 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部