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 相关文章推荐
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
PHP中COOKIES使用示例
Jul 26 PHP
smarty中常用方法实例总结
Aug 07 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 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
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
js二级地域选择的实现方法
2013/06/17 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
python构造IP报文实例
2020/05/05 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
大学生求职信范文应怎么写
2014/01/01 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
主管会计岗位职责
2014/03/13 职场文书
简历自荐信范文
2015/03/09 职场文书
公司慰问信范文
2015/03/23 职场文书
试用期转正工作总结2015
2015/05/28 职场文书