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_SELF的安全问题
Sep 05 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
浅析php创建者模式
Nov 25 PHP
php下Memcached入门实例解析
Jan 05 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 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
PHP print类函数使用总结
2010/06/25 PHP
php 生成文字png图片的代码
2011/04/17 PHP
CI框架附属类用法分析
2018/12/26 PHP
PHP fclose函数用法总结
2019/02/15 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
jquery实现数字输入框
2017/02/22 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
Python文件操作的面试题
2013/06/22 面试题
预备党员党校学习自我评价分享
2013/11/12 职场文书
采购部经理岗位职责
2014/02/10 职场文书
党员先进事迹材料
2014/12/19 职场文书
成绩报告单家长评语
2014/12/30 职场文书
大专护理专业自荐信
2015/03/25 职场文书
对公司的意见和建议
2015/06/04 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android