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


Posted in PHP onAugust 24, 2009

类文件 : _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的简单留言板,带分页,仅供参考
PHP 相关文章推荐
php+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
php学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
php获取随机数组列表的方法
Nov 13 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
php实用代码片段整理
Nov 12 PHP
建站常用13种PHP开源CMS比较
Aug 23 #PHP
怎样去阅读一份php源代码
Aug 21 #PHP
php win下Socket方式发邮件类
Aug 21 #PHP
Discuz 模板语句分析及知识技巧
Aug 21 #PHP
php 分页原理详解
Aug 21 #PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 #PHP
PHP 各种排序算法实现代码
Aug 20 #PHP
You might like
PHP垃圾回收机制简单说明
2010/07/22 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
Vue中如何实现proxy代理
2018/04/20 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
详解javascript函数写法大全
2019/03/25 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
Python运算符重载用法实例分析
2015/06/01 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python Web版语音合成实例详解
2019/07/16 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
pytorch forward两个参数实例
2020/01/17 Python
没编程基础可以学python吗
2020/06/17 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
商场总经理岗位职责
2014/02/03 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
实习协议书范本
2014/04/22 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
Docker安装MySql8并远程访问的实现
2022/07/07 Servers