类文件 : _class.xmldb.inc.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
- require("_class.xmldb.inc.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的简单留言板,带分页,仅供参考
|