TaoGOGO

欢迎您光临,这就是TaoGOGO的网络小窝!
点名游戏»
«服务器出现HTTP400、401、402、403错误原因及解决方法

php+xml留言本,通过php操作xml存储数据

一个php操作xml进行数据存储从而实现php+xml留言本

代码如下:

<?
class Message_XML extends DomDocument{//Message_XML类,继承PHP5的DomDocument类
private $Root;//属性
//方法
public function __construct(){//构造函数
    parent:: __construct();
    if (!file_exists("message.xml")){//创建或读取存储留言信息的XML文档message.xml
     $xmlstr = "<?xml version='1.0' encoding='GB2312'?><message></message>";
     $this->loadXML($xmlstr);
     $this->save("message.xml");
    }
    else
     $this->load("message.xml");
}
//增加留言
public function add_message($Subject,$Content){//标题,内容
    $Root = $this->documentElement;
          //获取留言消息
          $AutoID =date("Ynjhis");//年月日时分秒
          $Node_AutoID= $this->createElement("autoid");
          $text= $this->createTextNode(iconv("GB2312","UTF-8",$AutoID));
          $Node_AutoID->appendChild($text);
          $Node_Subject = $this->createElement("subject");
          $text    = $this->createTextNode(iconv("GB2312","UTF-8",$Subject));
          $Node_Subject->appendChild($text);
          $Node_Content = $this->createElement("content");
          $text= $this->createTextNode(iconv("GB2312","UTF-8",$Content));
          $Node_Content->appendChild($text);
          //建立一条留言记录
          $Node_Record = $this->createElement("record");
          $Node_Record->appendChild($Node_AutoID);
          $Node_Record->appendChild($Node_Subject);
          $Node_Record->appendChild($Node_Content);
          //加入到根结点下
          $Root->appendChild($Node_Record);
          $this->save("message.xml"); 
          echo "<script>alert('添加成功');location.href='".$_SERVER['PHP_SELF']."'</script>";
}

//删除留言
public function delete_message($AutoID){//根据ID删除
          $Root = $this->documentElement;
          //查询用户选择删除的留言记录
          $xpath = new DOMXPath($this);
          $Node_Record= $xpath->query("//record[autoid=$AutoID]");
          $Root->removeChild($Node_Record->item(0));
          $this->save("message.xml");
          echo "<script>alert('删除成功');location.href='".$_SERVER['PHP_SELF']."'</script>";
}

//显示留言
public function show_message(){
          $Root    = $this->documentElement;
          $xpath = new DOMXPath($this);
          //查询所有的留言记录
          $Node_Record = $this->getElementsByTagName("record");
          $Node_Record_Length    =$Node_Record->length;
          //循环输出其留言标题和内容信息
    echo '<div id="messagelist">';
          for($i=0;$i<$Node_Record->length;$i++){
     $K=0;
              foreach ($Node_Record->item($i)->childNodes as $articles){
      $Field[$K]=iconv("UTF-8","GB2312",$articles->textContent);
                  $K++;
              }
     echo "<div><b>$Field[1]</b>留言说:<b>$Field[2]</b><a href='?Action=update_message&AutoID=$Field[0]'>编辑</a> <a href='?Action=delete_message&AutoID=$Field[0]'>删除</a></div>";
          }
    echo '</div>';
}

//修改留言
public function update_message($AutoID){//根据ID修改
          $Root    = $this->documentElement;
          $xpath = new DOMXPath($this);
          $Node_Record = $xpath->query("//record[autoid=$AutoID]");
          $K=0;
          foreach ($Node_Record->item(0)->childNodes as $articles){
     $Field[$K]=iconv("UTF-8","GB2312",$articles->textContent);//元素的内容
              $K++;
          }
          echo "<form method='post' action='?Action=save_message&AutoID=$AutoID'>";
          echo "<div>留言标题:<input type=text name='Subject' value='$Field[1]' size=20></div>";
          echo "<div>留言内容:<textarea name='Content' cols=50 rows=5>$Field[2]</textarea></div>";
          echo "<div><input type='submit' value='修改留言'></div></form>";
}
         
//保存留言
public function save_message($AutoID,$Subject,$Content){//ID,标题,内容
          $Root    = $this->documentElement;
          //查询待修改的记录
          $xpath = new DOMXPath($this);
          $Node_Record    = $xpath->query("//record[autoid=$AutoID]");
          $Replace[0]=$AutoID;
          $Replace[1]=$Subject;
          $Replace[2]=$Content;
          $K=0;
          //修改
          foreach ($Node_Record->item(0)->childNodes as $articles){
           $Node_newText = $this->createTextNode(iconv("GB2312","UTF-8",$Replace[$K])); 
              $articles->replaceChild($Node_newText,$articles->lastChild);//***************有点疑问
              $K++;
          }
          echo "<script>alert('修改成功');location.href='".$_SERVER['PHP_SELF']."'</script>";
          $this->save("message.xml");
      }
                       
      //上传留言信息
      public function post_message(){
          echo "<form method='post' action='?Action=add_message'>";
          echo "<div>留言标题:<input type=text name='Subject' size=20></div>";
          echo "<div>留言内容:<textarea name='Content' cols=50 rows=5></textarea></div>";
          echo "<div><input type='submit' value='添加留言'></div></form>";
      }
}//class end
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>PHP+XML留言板</title>
<style>
td,body{font-size:14px}
#messagelist div{
 border:#999999 1px dotted;
 margin:4px;
 padding:6px;}
 #messagelist div b{}
 #messagelist div a{
 float:right;
 margin-top:-20px;
 color:#000000;
 margin-right:4px;}
  #messagelist div a:hover{ background:#FF0000;}
</style>
</head>
<body>
<div align="center"><a href="?Action=post_message">发表留言</a>^_^<a href="?Action=show_message">显示留言</a></div>
  <?php
                   //使用Message_XML类完成留言板
                  $HawkXML = new Message_XML;//创建一个实例
                  $Action ="";
                  if(isset($_GET['Action']))
      $Action = $_GET['Action'];
                    switch($Action){
                          case "show_message":          //查看
                                  $HawkXML->show_message();
                                  break;
                          case "post_message"://提交
                                  $HawkXML->post_message();
                                  break;
                          case "add_message"://增加
                                  $HawkXML->add_message($_POST['Subject'],$_POST['Content']);
                                  break;
                            case "delete_message"://删除
                                  $HawkXML->delete_message($_GET["AutoID"]);
                                  break;
                          case "update_message"://修改
                                  $HawkXML->update_message($_GET["AutoID"]);
                                  break;
                          case "save_message"://保存
                                  $HawkXML->save_message($_GET["AutoID"],$_POST['Subject'],$_POST['Content']);
                                  break;
                          default://默认查看
                                  $HawkXML->show_message();
                                  break;
            }
          ?>

</body>
</html>

想收藏或者和大家分享这篇好文章→ 分享家:Addthis中国

Tags: phpxml php留言 php操作xml |Comments:(6)|read:(473)

6 to "php+xml留言本,通过php操作xml存储数据"

  1. Qing
    回复 # 52001
    2009-07-15 at 20:30

    写成类了
    不错,不错

  2. ngshaozhu
    回复 # 51004
    2009-07-15 at 21:54

    恭喜你中奖了,被点名了,楼上的也是哦!嘿!http://www.ngshaozhu.com/2009/07/15/dmyx.html

  3. houkai
    回复 # 51005
    2009-07-15 at 23:32

    我接了 南宫少主的了
    你接我吧 在首页

  4. TaoGOGO
    回复 # 51006
    2009-07-16 at 09:18

    @ngshaozhu,houkai 在下已经完美的做好题啦了,呵呵,好玩!!

  5. 小明猪
    回复 # 52006
    2009-07-16 at 11:14

    我功夫还不行啊,用OOP就写不来...

  6. TaoGOGO
    回复 # 51011
    2009-07-16 at 11:21

    @小明猪 有了模版,拿过来用就行~

 

Leave a Reply




请输入计算结果:8+6

:) lol 8) mrgreen evil arrow :( more »

Tao公告

一定要努力啊,要做生活的强者!不要懈怠!@2009.12.22

搜索

G Show!