首页 > php代码 > php+xml留言板实例教程二

php+xml留言板实例教程二

这是一个xml 解析类

<?php
class Message_XML extends DOMDocument {
    const file_name = "e:/myphp/xmldom/xml/message.xml";
    private $root; //根节点
    private $PageNo; //当前页
    private $allNum; //记录总数
    private $PageSize; //页大小
    private $allPages; //总页数
    public function __construct() {
        parent::__construct();
        if (!file_exists(self::file_name)) {
            $xmlStr = "<?xml version='1.0' encoding='utf-8' ?><root />";
            $this->loadXML($xmlStr);
            $this->save(self::file_name);
        } else {
            $this->load(self::file_name);
        }
        $this->root = $this->documentElement;
        $this->get_pagemsg();
    }
    //得到页信息
    private function get_pagemsg() {
        $this->PageSize = 3; //页大小
        $allNode = $this->getElementsByTagName("record");
        $this->allNum = $allNode->length; //记录总数
        $this->allPages = ceil($this->allNum / $this->PageSize); //总页数
        $this->PageNo = $_GET["PageNo"];
        if ($this->PageNo < 1 || !is_numeric($this->PageNo)) {
            $this->PageNo = 1;
        } else if ($this->PageNo > $this->allPages) {
            $this->PageNo = $this->allPages;
        }
        $this->PageNo = (int)$this->PageNo;
    }
    //显示留言
    public function show_message() {
        $start_num = ($this->PageNo - 1) * $this->PageSize; //记录开始数
        $end_num = $start_num + $this->PageSize - 1; //记录结束数
        $allNode = $this->getElementsByTagName("record");
        $i = 0;
        foreach ($allNode as $v) {
            if ($i >= $start_num && $i <= $end_num) {
                $autoid = $v->getElementsByTagName("autoid")->item(0)->nodeValue;
                $subject = $v->getElementsByTagName("subject")->item(0)->nodeValue;
                $content = $v->getElementsByTagName("content")->item(0)->nodeValue;
                $str = "<div class='msgInfo'><p class='msgT'><span>留言标题:</span>$subject</p><p class='msgC'><span>留言内容:</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$content</p>";
                $str.= "<p class='msgCMD'><a href='?Action=edit_message&AutoID=$autoid&PageNo=$_GET[PageNo]'>编辑</a> <a href='?Action=delete_message&AutoID=$autoid&PageNo=$_GET[PageNo]'>删除</a></p></div>";
                print $str;
            }
            $i++;
        }
        $this->get_pageCode();
    }
    //得到当前页码
    public function get_pageCode() {
        $str = "<div class='pageCode'>当前页:" . $this->PageNo . " / " . $this->allPages . "&nbsp;&nbsp;&nbsp;<a href='?PageNo=1'>首页</a>&nbsp;<a href='?PageNo=" . ($this->PageNo - 1) . "'>上一页</a>&nbsp;<a href='?PageNo=" . ($this->PageNo + 1) . "'>下一页</a>&nbsp;<a href='?PageNo=" . ($this->allPages) . "'>末页</a>";
        $str.= "&nbsp;&nbsp;&nbsp;<input type='text' size='2' id='goPage' value='" . $this->PageNo . "'><input type='button' value='GO' onclick=window.location='?PageNo='+document.getElementById('goPage').value>";
        print $str;
    }
    //添加留言页面
    public function post_message() {
        print "<div><form method='post' action='?Action=add_message&PageNo=$_GET[PageNo]'>";
        print "<p>标题:<input type='text' name='Subject' size='50' /></p>";
        print "<p>内容:<textarea name='Content' cols='50' rows='5'></textarea></p>";
        print "<p><input type='submit' value='添加留言'></p></div></form>";
    }
    //添加留言
    public function add_message($Subject, $Content) {
        $autoid = microtime(); //留言ID
        $autoid = substr(strrchr(str_replace(" ", "", $autoid) , ".") , 1);
        $node_top = $this->root->appendChild($this->createElement("record"));
        $node_top->appendChild($this->createElement("autoid", $autoid));
        $node_top->appendChild($this->createElement("subject", $Subject));
        $node_top->appendChild($this->createElement("content", $Content));
        $this->save(self::file_name);
        echo "<script>alert('添加留言成功!');window.location='" . $_SERVER['PHP_SELF'] . "?PageNo=" . $_GET['PageNo'] . "'</script>";
    }
    //清空留言
    public function clear_message() {
        $fp = @fopen(self::file_name, "w+");
        if ($fp) {
            $str = "<?xml version='1.0' encoding='utf-8' ?><root />";
            fwrite($fp, $str);
            fclose($fp);
            echo "<script>alert('清空成功!');window.location='" . $_SERVER['PHP_SELF'] . "'</script>";
        } else {
            echo "<script>alert('清空失败!');history.back();</script>";
        }
    }
    //设置节点路径和操作对象ID
    private function set_nodePath($AutoID) {
        $xpath = new DOMXPath($this);
        $node_top = $xpath->query("//record[autoid=$AutoID]");
        return $node_top;
    }
    //删除留言
    public function delete_message($AutoID) {
        $node_top = $this->set_nodePath($AutoID);
        $this->root->removeChild($node_top->item(0));
        $this->save(self::file_name);
        echo "<script>alert('删除成功!');location='" . $_SERVER['PHP_SELF'] . "?PageNo=" . $_GET['PageNo'] . "'</script>";
    }
    //编辑留言页面
    public function edit_message($AutoID) {
        $node_top = $this->set_nodePath($AutoID);
        //取值方法1
        //$subject = $node_top -> item(0) -> getElementsByTagName("subject") -> item(0) -> nodeValue;
        //$content = $node_top -> item(0) -> getElementsByTagName('content') -> item(0) ->nodeValue;
        //取值方法2
        foreach ($node_top->item(0)->childNodes as $v) {
            $value[] = $v->textContent; //注意:这里的$value必须这样写成一个数组,否则要出错
            
        }
        print "<div><form method='post' action='?Action=save_message&AutoID=$AutoID&PageNo=$_GET[PageNo]'>";
        print "<p>标题:<input type='text' name='Subject' value=$value[1] size='50' /></p>";
        print "<p>内容:<textarea name='Content' cols='50' rows='5'>$value[2]</textarea></p>";
        print "<p><input type='submit' value='编辑留言'></p></div></form>";
    }
    //编辑留言
    public function save_message($AutoID, $Subject, $Content) {
        $node_top = $this->set_nodePath($AutoID);
        $replace_info[0] = $AutoID;
        $replace_info[1] = $Subject;
        $replace_info[2] = $Content;
        $i = 0;
        foreach ($node_top->item(0)->childNodes as $v) {
            $new_content = $this->createTextNode($replace_info[$i]);
            $v->replaceChild($new_content, $v->lastChild);
            $i++;
        }
        $this->save(self::file_name);
        echo "<script>alert('编辑成功!');location='" . $_SERVER['PHP_SELF'] . "?PageNo=" . $_GET['PageNo'] . "'</script>";
    }
}


本文链接:http://www.phprm.com/code/1a13efff713c51cd225d32e3ae152c7e.html

收藏随意^^请保留教程地址.

标签:none

发表留言