打印

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

写了一个简单的练习了下,使代码不再陷入烦人的HTML中,看着干净多了^_^

数据库结构:
其实也就一个表,你可以根据你的需要来设置字段,数据库名:lolooo,表名:wuleying(其实有没有数据库都可以完成我这个例子,不过数据库是为了以后扩展所做,在想加什么功能ING)我这里简单的设了6个字段,分别是:
复制内容到剪贴板
代码:
name   varchar  30
sex    varchar  2
age    int      10
qq     int      10
email  varchar  50
info   varchar  255
然后是模板页了(也就是纯html)
page1.html

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

 提示:您可以先修改部分代码再运行
花括号里的内容就是要替换掉的,其实用别的符号也行,甚至不用符号都成(当然有可能会出错),不过用花括号比较普遍吧~

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

然后是关键的了

function.php
复制内容到剪贴板
代码:
<?php
//账号与密码设定
$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'lolooo';
//sql查询A(用于insert update delete)
function sql_a($query)
{
    global $host,$user,$pass,$database;
    $conn = @mysql_connect($host,$user,$pass);
    @mysql_select_db($database,$conn);
    $result = @mysql_query($query);
    return $result;
}
//sql查询B(用于select)
function sql_b($query)
{
    global $host,$user,$pass,$database;
    
    $conn = @mysql_connect($host,$user,$pass);
    $result = @mysql_db_query($database,$query,$conn);
    @mysql_data_seek($result,0);
    while($row = @mysql_fetch_array($result))
    {
        $output[] = $row;
    }
    @mysql_free_result($result);
    @mysql_close($conn);
    return $output;
}
//sql查询C(用于insert 且自动产生编号)
function sql_c($query)
{
    global $host,$user,$pass,$database;
    
    $conn = @mysql_connect($host,$user,$pass);
    @mysql_select_db($database,$conn);
    $result = @mysql_query($query);
    $result = @mysql_insert_id();
    @mysql_close($conn);
    return $result;
}
//解析网页,并且替换输出
//$parser_array格式为:$array['key'] = value;
function read_and_parser($filename,$parser_array)
{
    $handle = fopen($filename,'r');
    $buffer = fread($handle,filesize($filename));
    @fclose($buffer);
    //开始查找替换
    while(list($key,$value)=each($parser_array))
    {
        $buffer = str_replace($key,$value,$buffer);//这一句是重点,把指定内容替换
    }
    
    return $buffer;
}
?>
show.php
复制内容到剪贴板
代码:
<?php
include_once('function.php');
$sql = "select * from wuleying";
$row = sql_b($sql);//执行查询
if($_GET['style']==1)
{
    $page = 'page1.html';
}
else
{
    $page = 'page2.html';
}
//把从数据库里取出的数据存到$array这个数组里
$array['{name}'] = $row[0][0];
$array['{sex}'] = $row[0][1];
$array['{age}'] = $row[0][2];
$array['{qq}'] = $row[0][3];
$array['{email}'] = $row[0][4];
$array['{info}'] = $row[0][5];
$output = read_and_parser($page,$array);//用自定义函数替换内容
echo $output;//显示页面
?>
OK,这就是最最最简单的模板套用(精简到不能再精简了),就是什么表现层与逻辑层分离吧(偶概念不清-_!!面壁去)

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

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

[ 本帖最后由 wuleying 于 2007-2-1 09:50 编辑 ]
博客又挂了
Never give up hope
经典站长联盟QQ群:16719484 PHPERQQ群:85363040
银子加油哦哈哈
感觉不错的,这应该是最简单的模板应用吧,字符串替换,PHP不熟……
Simple,Natural,Actual
HotHear's BLOG

回复 #2 HotHeart 的帖子

嘿嘿,刚开始学着做,见笑了
博客又挂了
Never give up hope
经典站长联盟QQ群:16719484 PHPERQQ群:85363040

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处
替换也可以考虑用正则
万能建站工具-帝国CMS
银子怎么不学smarty?方便得多了
才能一旦让懒惰支配,它就一无可为。

TOP

想骗分的 。嘻嘻。

用PHPLIB比你这好多了。

$R= NEW TEMPELATE()

SMARTY不适合小网站用。
freedom

TOP

回复 #6 laohoo 的帖子

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

另:你的签名与凌志的重了~~你个D版者
博客又挂了
Never give up hope
经典站长联盟QQ群:16719484 PHPERQQ群:85363040

TOP

哈哈。这个不能算D啊。要不我改个
freedom

TOP

这签名没有人跟我一样了吧、
freedom

TOP

回复 #9 laohoo 的帖子

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

就此止住


另:PHP还得多请教~~
博客又挂了
Never give up hope
经典站长联盟QQ群:16719484 PHPERQQ群:85363040

TOP

PHP的MVC:

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

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

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

TOP

喜欢smarty+pear构建,正在学习中

TOP