php+xml留言板实例教程二

这是一个xml 解析类

?phpclass 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/pp
class=’msgC’span留言内容:/spanbr /br
/nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;$content/p;$str .= p
class=’msgCMD’a
href=’?Action=edit_messageAutoID=$autoidPageNo=$_GET[PageNo]’编辑/a
a
href=’?Action=delete_messageAutoID=$autoidPageNo=$_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’首页/anbsp;a
href=’?PageNo=.($this-PageNo – 1).’/anbsp;a href=’?PageNo=.($this-PageNo

  • 1).’/anbsp;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 divform
    method=’post’ action=’?Action=add_messagePageNo=$_GET[PageNo]’;print
    p标题:input type=’text’ name=’Subject’ size=’50’ //p;print
    p内容:textarea name=’Content’ cols=’50’ rows=’5’/textarea/p;print
    pinput 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
    scriptalert(‘添加留言成功!’);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
    scriptalert(‘清空成功!’);window.location=’.$_SERVER[‘PHP_SELF’].’/script;}else{echo
    scriptalert(‘清空失败!’);history.back();/script;}}//设置节点路径和操作对象IDprivate
    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
    scriptalert(‘删除成功!’);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;//取值方法2foreach($node_top – item(0) – childNodes as
    $v){$value[] = $v – textContent;
    //注意:这里的$value必须这样写成一个数组,否则要出错}print divform
    method=’post’
    action=’?Action=save_messageAutoID=$AutoIDPageNo=$_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 pinput 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
    scriptalert(‘编辑成功!’);location=’.$_SERVER[‘PHP_SELF’].?PageNo=.$_GET[‘PageNo’].’/script;}}?