php xml留言板 xml存储数据的简单例子

2018-09-07 19:15

阅读:334

  类文件.php
复制代码 代码如下:
<?php
class xmldb extends DOMDocument{
var $xmldb;
public function __construct($xmldbname){
$this->xmldb=$xmldbname;
if(!file_exists($this->xmldb)){
$initxmldb = <?xml version=\1.0\ encoding=\utf-8\?><Message></Message>;
$this->loadXML($initxmldb);
$this->save($this->xmldb);
}else{
$this->load($this->xmldb);
}

}
public function insert_message($nickname,$message){

$messagedom = $this->getElementsByTagName(Message);
$subnode = $this->createElement(Rows);
$nicknamenode = $this->createElement(Nickname);
$nicknamenode -> appendChild($this->createTextNode($nickname));
$subnode -> appendChild($nicknamenode);
$contentnode = $this->createElement(Content);
$contentnode -> appendChild($this->createTextNode($message));
$subnode -> appendChild($contentnode);
$timernode = $this->createElement(Timer);
$timernode -> appendChild($this->createTextNode(time()));
$subnode -> appendChild($timernode);
$messagedom->item(0)->appendChild($subnode);
$this->saveXML();
$this->save($this->xmldb);
}
function get_node_length($nodename){

$odom = $this->getElementsByTagName($nodename);
return $odom->length;
}
public function get_message_list($start,$rowscount,$pagesize){
$end = $rowscount > $pagesize ? $start+$pagesize : $rowscount;

$k = 0;
for($i = $start; $i < $end; $i++){
$rowslist[$k][Nickname] = $this->getElementsByTagName(Nickname)->item($i)->nodeValue;
$rowslist[$k][Content] = $this->getElementsByTagName(Content)->item($i)->nodeValue;
$rowslist[$k][Timer] = $this->getElementsByTagName(Timer)->item($i)->nodeValue;
$k++;
}
return $rowslist;
}
public static function splitpage($pageall,$page=1,$urled=null,$strpage = page,$pageaverage = 10){
$pageaverage -= 1;
$page = intval($page >=1 ? $page : 1 );
$page = $page > $pageall ? $pageall : $page;
$startpage = $page - $pageaverage > 0 ? $page - ceil(($pageaverage / 2)):1;
$startpage = ($page + ceil($pageaverage/2) > $pageall)?$pageall-$pageaverage:$startpage;

$startpage = $startpage > 0 ? $startpage : 1;
$stoppage = $startpage+$pageaverage >$pageall?$pageall:$startpage+$pageaverage;
if(empty($urlfile)){ $urlfile=$_SERVER[PHP_SELF]; }
if(!strrpos($urlfile,?)) $urled .= ?;
foreach($_GET as $k => $v)
{
$urled = ($k<>$strpage) ? $urled.$k.=.urlencode($v).& : $urled;
}
if ($page>1){
$mess =<a href=.$urled.$strpage.=1 href=.$urled.$strpage.=1>首页</a>;
$mess .=<a href=.$urled.$strpage.=.($page-1). href=.$urled.$strpage.=.($page-1).>上一页</a>;
}else{
$mess =首页;
$mess .=上一页;
}
if($page > 9){
$startpage = $page - 9;
}
$stoppage = $startpage + 9 >= $pageall ? $pageall : $startpage + 9;
for($i= $startpage; $i<= $stoppage ;$i++)
{
if($i<= $pageall && !($page==$i))
$mess .= <a href=.$urled.$strpage.=.$i. href=.$urled.$strpage.=.$i.>.$i.</a> ;
else
$mess .= .$i. ;
}
if ($page < $pageall){
$mess .=<a href=.$urled.$strpage.=.($page+1). href=.$urled.$strpage.=.($page+1).>下一页</a>;
$mess .=<a href=.$urled.$strpage.=.$pageall. href=.$urled.$strpage.=.$pageall.>尾页</a>;
}else{
$mess .=下一页;
$mess .=尾页;
}
return $mess;
}
}
?>

调用文件 : index.php
复制代码 代码如下:
<?php
$xmldb = new xmldb(./my_xmldb.xml);
if(isset($_POST[btnform1])){
$xmldb -> insert_message($_POST[nickname],$_POST[content]);
}
$pagesize= 3;
$page= !empty($_GET[page]) ? intval($_GET[page]) : 1;
$rowscount= $xmldb -> get_node_length(Rows);
$pagecount= ceil($rowscount/$pagesize);
$start= ($page-1)*$pagesize > $rowscount ? $rowscount : ($page-1)*$pagesize;
$rowslist = $xmldb -> get_message_list($start,$rowscount,$pagesize);
?>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<HTML>
<HEAD>
<meta http-equiv=content-type content=text/html;charset=utf-8>
<TITLE> New Document </TITLE>
<style type=text/css><!--
#messagelist ul li{ float:left;list-style-type:none; }

--></style><style type=text/css bogus=1>#messagelist ul li{ float:left;list-style-type:none; }
</style>
</HEAD>
<BODY>
<div id=messagelist>
<?php
if(!empty($rowslist))
{
foreach($rowslist as $key => $value)
{
echo <ul><li>.$value[Nickname]. <span>(.date(Y-m-d H:i,$value[Timer]).)</span></li>;
echo <li>.$value[Content].</li></ul><br>;
}
}
?>
<div><?=$xmldb -> splitpage($pagecount,$page,,page,$pagesize)?></div>
</div>
<div>
<form action= method=post name=form1>
昵称:<input type=text name=nickname><br>
内容:<textarea name=content>

php操作xml的简单留言板,带分页,仅供参考


评论


亲,登录后才可以留言!