php生成静态页

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

php生成静态页

两个文件:
Addnews.php
Template.html
还有一个数据库

首先建立数据库,然后调用addnews.php,然后可以得到结果.

得到的html文件的名字是由当前日期加上标题构成,如果需要用唯一的东西来生成html的话,最好使用sql中的自增的id,或者自建一个当天的临时数据,来联合生成html文件名.

本程序使用了php中 数据库操作,文件操作等知识.曾见过有牛人用ob_start写,利用了缓冲,方法也不错.

Addnews.php程序如下:
<?php
$conn=mysql_connect('localhost','root','myz');
if (mysqli_connect_errno())
{
echo mysqli_connect_error();
exit;
}
mysql_select_db('myztohtml',$conn);
mysql_query("SET NAMES 'gbk'");

if (isset($_POST['submit']))
{
$title=$_POST['title'];
$content=$_POST['content'];
$time=date('Ymd');
$query = "INSERT INTO news (title,content,time) VALUES ('".$title."','".$content."','".$time."')";
$result=mysql_query($query);
if ($result)
{
$filename=$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/'.$time.$title.'.html';
$fp=fopen($filename,'w');
$filenameT=$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/template.html';
$fpT=fopen($filenameT,'r');
$str=fread($fpT,filesize($filenameT));
$str=str_replace('{title}',$title,$str);
$str=str_replace('{content}',$content,$str);
fwrite($fp,$str);
fclose($fp);
fclose($fpT);
echo 'ok! '.'view the htmlnews output:<a href="'.$time.$title.'.html">'.$title.'</a>';
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title></title>
</head>
<body>
<form method="post" action="addnews.php">
新闻标题:<input type="text" name="title"><br />
新闻内容:<textarea name="content"></textarea><br />
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>

Template.html如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>{title}</title>
</head>
<body>
{content}
</body>
</html>

数据库如下:
-- phpMyAdmin SQL Dump
-- version 2.10.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2007 年 07 月 18 日 16:55
-- 服务器版本: 5.0.27
-- PHP 版本: 5.2.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- 数据库: `myztohtml`
--

-- --------------------------------------------------------

--
-- 表的结构 `news`
--

CREATE TABLE `news` (
`id` mediumint(9) NOT NULL auto_increment COMMENT '编号',
`title` varchar(50) NOT NULL COMMENT '标题',
`content` varchar(200) NOT NULL COMMENT '内容',
`time` date NOT NULL COMMENT '日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;

--
-- 导出表中的数据 `news`
--

Mysql中随即读取一条数据
原来的读法是
SELECT * FROM _table //读取数据
得到一个数据集,
然后使用RecordCount()读出条目数量,然后使用PHP中的RAND(0,RecordCount()-1),
然后使用move( RAND(0,RecordCount()-1) ),得到该数据

这样需要读取的数据比较多,浪费资源,换成下面的程序:
SELECT * FROM _table ORDER BY rand() LIMIT 0,1
得到一个数据集,其实就一个数据
然后直接读出来就可以了.可以通过phpmyadmin试一下该语句

你可能感兴趣的:(html,PHP,mysql,SQL Server,FP)