编辑文章时应该将其对应的Html静页面同时进行更新,下面来看一下“PHP更新文章时同时更新对应的Html页面”的思路,大致是这样的,执行的程序首先要将字段接受过来,这里有一个关键是有一个字段是保存Html的路径,接受过来之后,再将对应的模板打开,进行新内容的替换,重新生成Html。
下面是编辑时的执行程序:
<?php if($_SESSION["admin"]<>session_id()) { header("location:admin.php"); } require_once("../inc/conn.php"); $id=$_GET["id"]; if($_POST["Submit"]) { $title=$_POST["title"]; $typeid=$_POST["typ"]; $sql="select * from newstype where newstypeid=$typeid"; $rs=mysql_query($sql); $rows=mysql_fetch_assoc($rs); $type=$rows["newstype"]; $content=$_POST["d_content"]; $source=$_POST["source"]; $path=$_POST["path"]; $time=$_POST["time"]; $root=$_SERVER['DOCUMENT_ROOT']; $filepath="$root/newslist/$path"; if(file_exists($filepath)) { $moban="$root/moban/moban.html"; $fp=fopen($moban,"r"); $str=fread($fp,filesize($moban)); fclose($fp); $str=str_replace("{-type-}",$type,$str); $str=str_replace("-title-",$title,$str); $str=str_replace("-time-",$time,$str); $str=str_replace("-content-",$content,$str); $str=str_replace("-source-",$source,$str); $fp=fopen($filepath,"w"); fwrite($fp,$str); fclose($fp); } $sql="update newscontent set newstypeid=$typeid,newstitle='$title',newssource='$source' where newsid=$id"; if(mysql_query($sql)) { ?> <h2 style="color:#FF0000" align="center">修改成功</h2> <h3 align="center"><a href="admin.php">返回</a></h3> <?php } else { ?> <h2 style="color:#009900" align="center">修改失败</h2> <h3 align="center"><a href="admin.php">返回</a></h3> <?php } die(); } ?>
其实只要想明白其中的原理了,也就不难理解了。刚开始的 if 语句不用管,是一个验证是否登陆的语句,如果没有admin的值,会跳转到 admin.php页面(上次发的源码里面没有这一句,这次加上了),require_once("../inc/conn.php");这句就是包含数据库连接的文件。$id=$_GET["id"];这个就是接受过来的新闻ID,一定要有这句,否则找不到要更新哪篇文章,下面的if语句就是当Submit接受的不为空的时候,将进行文章更新操作,数据库里面的更新好理解,只要有一条Updata语句即可,这里的关键在于中间的 if(file_exists($filepath)) 和下面执行的句子了,这里的意思是判断文章的路径是不是存在,如果存在的话就进行更新替换对应的html操作。进行替换这里依然用的是str_replace的函数。这些进行完以后,下面就有一个判断是否修改成功,很简单就不再阐述了。 |