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音乐采集(部分代码)
Feb 14 PHP
php获取地址栏信息的代码
Oct 08 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
php的sso单点登录实现方法
Jan 08 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
ThinkPHP模型详解
Jul 27 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
PHP实现的进度条效果详解
May 03 PHP
php session的应用详细介绍
Mar 22 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 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 采集心得技巧
2009/05/15 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
详解Python验证码识别
2016/01/25 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python 处理数据的实例详解
2017/08/10 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
职业规划书如何设计?
2014/01/09 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
财产保全担保书
2015/01/20 职场文书
档案接收函格式
2015/01/30 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Python经常使用的一些内置函数
2022/04/11 Python