数据库设计
先设计一个简单的数据库,title为新闻标题,content为新闻内容,path为生成的html文件的路径。
create table news
(
news_id bigint(20) unsigned not null auto_increment primary key,
title text not null,
content text not null,
path text not null
)DEFAULT CHARSET=utf8;
表单设计
<form method="post" action="add.php"> //提交至 add.php
新闻标题:<input type="text" name="title" size="20"><br>
新闻内容:<textarea name="content" cols="10" rows="25"></textarea><br>
<input type="submit" name="提交">
</form>
生成静态新闻网页文件
建立一个 HTML 的模板,另存为model.html,和 add.php可以在同一目录下。
模板的源代码如下:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<html>
<body>
此新闻的标题:{title}
此新闻的内容:{content}
</body>
</html>
接下来,用PHP实现从数据库获取由表单提交的新闻数据,然后替换HTML模板,生成静态的新闻的网页HTML文件。具体代码如下:
conn.php
<?php
//连接到本地MySQL数据库
$myconn=mysql_connect("localhost","root","");
//选择info为操作对象数据库
mysql_select_db("test",$myconn);
?>
cms.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
//连接到本地MySQL数据库
require("conn.php");
$strSql="select * from news";
//用mysql_query函数从user表里读取数据
$result=mysql_query($strSql,$myconn);
while($row=mysql_fetch_array($result))//通过循环读取数据内容
{
?>
<?php
echo $row["title"];
$title = $row["title"];
$content = $row["content"];
$path = $row["news_id"].'.html';//以当前操作的文件的id作为后面要生成的HTML文件的名称
$fp = fopen("model.html","r");//以只读方式打开模版
$str = fread($fp,filesize("model.html"));//将模版页面内容读入字符串$str中
$str = str_replace("{title}",$title,$str);
$str = str_replace("{content}",$content,$str);
fclose($fp);//替换模版中需要替换的内容,完成后关闭即可
$handle = fopen($path,"w");//打开将要生成的文件
fwrite($handle,$str);//将替换后的模版内容写入新页面中,即生成新的HTML页面
fclose($handle);//关闭
?>
<?php
}
//关闭对数据库的连接
mysql_close($myconn);
?>
{ }大括号内的内容即是要被替换的内容,整个静态模板的设计可以根据自己的思路,但{ }内被替换的内容必须包含在内,如上面的{title},{content};咔咔~简单地说,设计好一个很好看的新闻模板后,把要被替换的如{title},{content}等标记放到需要的地方就可以了。
总结一下以上的做法:先设计好新闻模板,把需要被替换的内容用{ }放到模板中相应的位置,然后设计表单,再是最后的表单处理程序,把从表单中获取的变量替换模板中相应的内容即可,这样每次都会生成不同的HTML;如果需要修改HTML的内容也是一样的,获得修改后的表单内容后,先用 update 语句更新数据库,再重新替换一下模板中的内容即可;删除的话,先delete表中要删除的内容,再用unlink($path) 来删除HTML的物理文件即可。