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 相关文章推荐
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 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使用者状态管理功能的应用
2006/10/09 PHP
php中this关键字用法分析
2016/12/07 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
vuex的使用步骤
2021/01/06 Vue.js
Python创建xml的方法
2015/03/10 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
关于感恩的演讲稿400字
2014/08/26 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
师范生见习报告
2014/10/31 职场文书
公司门卫岗位职责
2015/04/13 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL