Discuz教程网

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

[复制链接]
authicon dly 发表于 2011-9-3 19:34:32 | 显示全部楼层 |阅读模式
类文件 : _class.xmldb.inc.php
代码如下:

  1. <?php
  2. class xmldb extends DOMDocument{
  3. var $xmldb;
  4. public function __construct($xmldbname){
  5. $this->xmldb=$xmldbname;
  6. if(!file_exists($this->xmldb)){
  7. $initxmldb = "<?xml version="1.0" encoding="utf-8"?><Message></Message>";
  8. $this->loadXML($initxmldb);
  9. $this->save($this->xmldb);
  10. }else{
  11. $this->load($this->xmldb);
  12. }

  13. }
  14. public function insert_message($nickname,$message){

  15. $messagedom = $this->getElementsByTagName("Message");
  16. $subnode = $this->createElement("Rows");
  17. $nicknamenode = $this->createElement("Nickname");
  18. $nicknamenode -> appendChild($this->createTextNode($nickname));
  19. $subnode -> appendChild($nicknamenode);
  20. $contentnode = $this->createElement("Content");
  21. $contentnode -> appendChild($this->createTextNode($message));
  22. $subnode -> appendChild($contentnode);
  23. $timernode = $this->createElement("Timer");
  24. $timernode -> appendChild($this->createTextNode(time()));
  25. $subnode -> appendChild($timernode);
  26. $messagedom->item(0)->appendChild($subnode);
  27. $this->saveXML();
  28. $this->save($this->xmldb);
  29. }
  30. function get_node_length($nodename){

  31. $odom = $this->getElementsByTagName($nodename);
  32. return $odom->length;
  33. }
  34. public function get_message_list($start,$rowscount,$pagesize){
  35. $end = $rowscount > $pagesize ? $start+$pagesize : $rowscount;

  36. $k = 0;
  37. for($i = $start; $i < $end; $i++){
  38. $rowslist[$k]["Nickname"] = $this->getElementsByTagName("Nickname")->item($i)->nodeValue;
  39. $rowslist[$k]["Content"] = $this->getElementsByTagName("Content")->item($i)->nodeValue;
  40. $rowslist[$k]["Timer"] = $this->getElementsByTagName("Timer")->item($i)->nodeValue;
  41. $k++;
  42. }
  43. return $rowslist;
  44. }
  45. public static function splitpage($pageall,$page=1,$urled=null,$strpage = "page",$pageaverage = 10){
  46. $pageaverage -= 1;
  47. $page = intval($page >=1 ? $page : 1 );
  48. $page = $page > $pageall ? $pageall : $page;
  49. $startpage = $page - $pageaverage > 0 ? $page - ceil(($pageaverage / 2)):1;
  50. $startpage = ($page + ceil($pageaverage/2) > $pageall)?$pageall-$pageaverage:$startpage;

  51. $startpage = $startpage > 0 ? $startpage : 1;
  52. $stoppage = $startpage+$pageaverage >$pageall?$pageall:$startpage+$pageaverage;
  53. if(empty($urlfile)){ $urlfile=$_SERVER["PHP_SELF"]; }
  54. if(!strrpos($urlfile,'?')) $urled .= '?';
  55. foreach($_GET as $k => $v)
  56. {
  57. $urled = ($k<>$strpage) ? $urled.$k.'='.urlencode($v).'&' : $urled;
  58. }
  59. if ($page>1){
  60. $mess ="<a href="".$urled.$strpage."=1" href="".$urled.$strpage."=1">首页</a> ";
  61. $mess .="<a href="".$urled.$strpage."=".($page-1)."" href="".$urled.$strpage."=".($page-1)."">上一页 </a>";
  62. }else{
  63. $mess ="首页 ";
  64. $mess .="上一页 ";
  65. }
  66. if($page > 9){
  67. $startpage = $page - 9;
  68. }
  69. $stoppage = $startpage + 9 >= $pageall ? $pageall : $startpage + 9;
  70. for($i= $startpage; $i<= $stoppage ;$i++)
  71. {
  72. if($i<= $pageall && !($page==$i))
  73. $mess .= "<a href="".$urled.$strpage."=".$i."" href="".$urled.$strpage."=".$i."">".$i."</a> ";
  74. else
  75. $mess .= "".$i." ";
  76. }
  77. if ($page < $pageall){
  78. $mess .=" <a href="".$urled.$strpage."=".($page+1)."" href="".$urled.$strpage."=".($page+1)."">下一页</a>";
  79. $mess .=" <a href="".$urled.$strpage."=".$pageall."" href="".$urled.$strpage."=".$pageall."">尾页</a>";
  80. }else{
  81. $mess .=" 下一页";
  82. $mess .=" 尾页";
  83. }
  84. return $mess;
  85. }
  86. }
  87. ?>
复制代码




调用文件 : index.php
代码如下:

  1. <?php
  2. require("_class.xmldb.inc.php");
  3. $xmldb = new xmldb("./my_xmldb.xml");
  4. if(isset($_POST["btnform1"])){
  5. $xmldb -> insert_message($_POST["nickname"],$_POST["content"]);
  6. }
  7. $pagesize = 3;
  8. $page = !empty($_GET['page']) ? intval($_GET['page']) : 1;
  9. $rowscount = $xmldb -> get_node_length("Rows");
  10. $pagecount = ceil($rowscount/$pagesize);
  11. $start = ($page-1)*$pagesize > $rowscount ? $rowscount : ($page-1)*$pagesize;
  12. $rowslist = $xmldb -> get_message_list($start,$rowscount,$pagesize);
  13. ?>
  14. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  15. <HTML>
  16. <HEAD>
  17. <meta http-equiv="content-type" content="text/html;charset=utf-8">
  18. <TITLE> New Document </TITLE>
  19. <style type='text/css'><!--
  20. #messagelist ul li{ float:left;list-style-type:none; }

  21. --></style><style type='text/css' bogus="1"> #messagelist ul li{ float:left;list-style-type:none; }
  22. </style>
  23. </HEAD>
  24. <BODY>
  25. <div id="messagelist">
  26. <?php
  27. if(!empty($rowslist))
  28. {
  29. foreach($rowslist as $key => $value)
  30. {
  31. echo "<ul><li>".$value["Nickname"]." <span>(".date("Y-m-d H:i",$value["Timer"]).")</span></li>";
  32. echo "<li>".$value["Content"]."</li></ul><br>";
  33. }
  34. }
  35. ?>
  36. <div><?=$xmldb -> splitpage($pagecount,$page,'','page',$pagesize)?></div>
  37. </div>
  38. <div>
  39. <form action="" method="post" name="form1">
  40. 昵称:<input type="text" name="nickname"><br>
  41. 内容:<textarea name="content">
复制代码



php操作xml的简单留言板,带分页,仅供参考




上一篇:PHP 获取MSN好友列表的代码(2009-05-14测试通过)
下一篇:PHP 取得瑞年与平年的天数的代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 18:50

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表