欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

一个查询、批改单词的界面和后台用xml文件存放单词的php程序

更新时间: 2014-01-05 02:01:19 责任编辑: Author_N1

 

一个查询、修改单词的界面和后台用XML文件存放单词的php程序

直接贴代码吧!主要有两个文件,一个查询、修改单词的表单所处的页面。然后另外一个文件用于将单词保存到XML文件中,使用的类是DOMDocument类。这个类就是用于操作XML文件的。

<head>
<title>test for xml file</title>
<script type="text/javascript">
<!--
function cssShow(){
	var b=document.getElementById("sele");
	if(b.value==2){
		document.getElementById("desc").style.display="none";
		document.getElementById("note").style.display="none";
	}
	else {
		document.getElementById("desc").style.display="inline-block";
		document.getElementById("note").style.display="inline-block";
	}
}
-->
</script>
</head>
<form  action="./test.php" method="post"> 
word:   <input type="text" size=20 name="word"/><br/>
<span  id="desc">descri: <input type="text" size=20 name="descri"/></span><br/>
<span id="note">note:   <input  type="text" size=20 name="note"/></span><br/>
<select id="sele" name="select" onchange="javascript:cssShow();">
<option value="1" selected="selected">insert</option>
<option value="2">query</option>
</select><br/>
<input type="submit" value="submit"/>
</form>
<?php 
	header("content-type:text/html;charset=utf-8");
	require_once 'xml.class.php';
	if(isset($_POST['select'])){
		$word=$descri=$note="";
		$dom = new XMLOper();
		if(isset($_POST['word'])){
			$word=$_POST['word'];
			$word=strtoupper($word);
		}
		if(isset($_POST['descri'])){
			$descri=$_POST['descri'];
		}
		if(isset($_POST['note'])){
			$note=$_POST['note'];
		}
		$arr=array($descri,$word,$note);
		switch($_POST['select']){
			case 1:if(!$dom->checkWord($word)){$dom->xml_insert($arr);$dom->save();echo "successful";}
					else {echo "danci has exist yet!";}exit;
			case 2:if(!$dom->checkWord($word)) die("no word in the dbtable");
				   $arr=$dom->xml_query($word);
				   if($arr[0]==""){
						die("no word in xml");
					}
				   	echo "result:<br/>word:$arr[0]<br/>descri:$arr[1]<br/>note:$arr[2]";
				
		}
	}
?>


xml.class.php文件如下:

<?php
class XMLOper {
	private  $dom;
	private  $root;
	public function __construct(){
		$this->dom =new DOMDocument("1.0","utf-8");
		$this->dom->formatOutput=true;
	}
	public function xml_query($word){
		$bool=$this->dom->load("test.xml");
		if(!$bool)echo "error when load the xml file<br/>";
		$arr=array();
		$temp=$this->dom->getElementById($word);
		$arr[0]=$temp->getElementsByTagName("NAME")->item(0)->nodeValue;
		$arr[1]=$temp->getElementsByTagName("DESCRI")->item(0)->nodeValue;
		$arr[2]=$temp->getElementsByTagName("NOTES")->item(0)->nodeValue;
		return $arr;
	}
	public function setTextNode($Node,$content){
		$Node->appendChild($this->dom->createTextNode($content));
	}
	public function xml_insert($contentArray){
		$arr=array("WORD","DESCRI","NAME","NOTES");
		$this->setRootEle("DANCI");
		for($j=0;$j<4;$j++){
			$tempArr[$j]=$this->dom->createElement($arr[$j]);
		}
		$word=$this->root->appendChild($tempArr[0]);
		for($j=1;$j<4;$j++){
			$this->setTextNode($word->appendChild($tempArr[$j]),$contentArray[$j-1]);
		}	
		$word->setAttribute("id", $contentArray[1]);	
	}
	public function setRootEle($name){
		$this->root=$this->dom->appendChild($this->dom->createElement($name));
	}
	public function checkWord($word){
		$str=file_get_contents("test.xml");
		if(preg_match("/<NAME>".$word."<\/NAME>/", $str)==1)return true;
		else return false;
	}
	public function save(){
		$this->dom->save("temp.xml");
		$fp=fopen("temp.xml", "r+");//不能用w+,要不然文件就会被覆盖,这种方式会覆盖之前写过的信息,而不是插入。
		/*下面的一句话就可以让保存的文件的编码设为UTF-8,而文件默认编码方式为ANSI。这一点可以用记事本程序查看文件的编码方式
		 fwrite($fp,"\xef\xbb\xbf");*/
		fwrite($fp, "<?xml ?>"); 	
		fgets($fp,200);//第一行字节留有200足够,使文件指针转移到下一行
		//fgets($fp,200);
		$xml="";
		while(!feof($fp)){
		$xml.=fread($fp, 1024);
		}
		$xml.="</TABLE>";
		fclose($fp);
		$str=file_get_contents("test.xml");
		$pattern="/<\/TABLE>/";$replacement="";
		$str=preg_replace($pattern,$replacement,$str);
		file_put_contents("test.xml",$str);
		$fp=fopen("test.xml", "a+");		
		fwrite($fp,$xml);
		fclose($fp);
	}
}
	
	



?>


上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:01:19
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4604/
本文WWW.DOC100.NET DOC100.NET版权所有。