PHP DOMDocument实现XML读写操作

 更新时间:2016年11月25日 16:54  点击:1326
在php中操作xml文档我们可以直接调用DOMDocument类或使用simplexml_load_string类来操作,这些都不需要加载算是内置函数了,我们直接使用。

是PHP脚本读取XML最原始,最笨的方法。

 代码如下 复制代码

$doc = new DOMDocument();
  
$doc->load('test.xml');
  
$rows = $doc->getElementsByTagName("ds");
  
$d = array();
  
$i = 0;
foreach($rows as $row)
{
   $web     = $row->getElementsByTagName('web');
   $webUrl  = $row->getElementsByTagName('webUrl');
   $d[$i]['web']    = $web->item(0)->nodeValue;
   $d[$i]['webUrl'] = $webUrl->item(0)->nodeValue;
   $i++;
}
  
print_R($d);


简单,容易,速度快

 代码如下 复制代码


$xmlData = file_get_contents('test.xml');
  
$xml = simplexml_load_string($xmlData);
  
$xmlArr = objectToArray($xml);

objectToArray函数代码如下

function objectToArray($object)
{  
   if(!$object) return '';
   $result = array();  
   $object = is_object($object) ? get_object_vars($object) : $object;  
   foreach ($object as $key => $val) {  
       $val = (is_object($val) || is_array($val)) ? objectToArray($val) : $val;  
       $result[$key] = $val;  
   }  
   return $result;  
}

上面讲到了读取xml,下面再介绍写xml实例

 代码如下 复制代码

$arr = array(
         array('id'=>1,'web'=>'好脚本','webUrl'=>'http://www.111cn.net'),
         array('id'=>2,'web'=>'PHP脚本','webUrl'=>'http://www.111cn.net/'),
         array('id'=>3,'web'=>'JavaScript脚本','webUrl'=>'http://www.111cn.net/'),
         array('id'=>4,'web'=>'js脚本','webUrl'=>'http://www.111cn.net/'),
         array('id'=>5,'web'=>'PHP脚本示例','webUrl'=>'http://www.111cn.net/'),
         array('id'=>5,'web'=>'JavaScript脚本示例','webUrl'=>'http://www.111cn.net/')
         );
/*使用dom生成xml,注意生成的xml中会没有空格。*/
$dom=new DOMDocument('1.0','utf-8');
  
$path= "logs/test.xml";
  
$data=$dom->createElement('data');
  
$dom->appendChild($data);
  
foreach($arr as $v)
{
    $ds = $dom->createElement('ds');
  
    $id = $dom->createAttribute('id'); 
      
    $id->nodeValue = $v['id'];
   
    $ds->setAttributeNode($id);
  
    $data->appendChild($ds);
  
    foreach($v as $kk=>$vv)
    {
       ${$kk} = $dom->createElement($kk); 
              
       $value= $dom->createTextNode($vv);
      
       ${$kk}->appendChild($value);
  
       $ds->appendChild(${$kk});
  
    }
}
  
$dom->saveXML();
  
$dom->save($path);

近经常需要采集一些网上的数据,发现一个PHP处理HTML的利器 simple html dom,看了一下文档,使用非常方便,关键是能够用CSS选择器来访问DOM树,和jquery相似,实在是难得的利器

入门级

simple_html_dom插件
用dom处理html文件的利器
使用:
加载simple_html_dom.php文件

require_once 'simple_html_dom.php'

new simple_html_dom对象

$dom = new simple_html_dom()

加载html

$dom->load($html);

find()方法

$dom->find('div.lookLeftname', 0)->plaintext

class=‘lookLeftname'的div中的纯文本

$dom->find('div.lookLeftname', 0)->innertext

class='lookLeftname'的div中的内部文本

完整测试实例

 代码如下 复制代码

<?php
require_once("simple_html_dom.php");
ini_set('memory_limit','1000M');
ini_set("max_execution_time",6000000);

for($i=1;$i<=21;$i++){
 $html = file_get_html(http://www.111cn.net);
 $as = $html->find('.shopname a');
 $sum = 0;
 foreach($as as $a) {
  if($a->plaintext != "分店"){
   $a->href = "http://www.xx.com".$a->href;
   echo $a->outertext."------".$a->href."-------<br>";
   $sum++;
  }
 }
 echo "<br><br>第 {$i} 页结束 ,数目:{$sum}<hr>";
}
?>

本文章来给大家介绍一个PHP 操作xml编程之xml的crud操作,有需要了解的同学可参考。

html代码页面

 代码如下 复制代码

<html>
<head>
    <meta http-equiv="Content-type" content="text/html;charset=utf-8">
</head>
<body>
    <form action="wordProcess.php" method="post">
        <input type="text" name="enword">
        <input type="hidden" name="type" value="query">
        <input type="submit" value="查询">
    </form>
    <span>添加单词</span>
    <form action="wordProcess.php" method="post">
        英文:<input type="text" name="enword"><br>
        中文:<input type="text" name="zhword"><br>
        <!--<input type="hidden" name="type" value="insert">
        <input type="hidden" name="type" value="update"> -->
        <input type="submit" name="type" value="添加">
        <input type="submit" name="type" value="修改">
    </form>
    <form action="wordProcess.php" method="post">
        <input type="text" name="word">
        <input type="hidden" name="type" value="delete">
        <input type="submit" value="删除">
    </form>
</body>
</html>

wordpress.php文件

 代码如下 复制代码


<?php

    //接收类型 看看用户做什么(查询、添加....)
    $type=$_REQUEST['type'];
    //echo $type;
    //exit();
    //创建xml文档对象
    $doc=new DOMDocument();
    $doc->load("words.xml");

    //进行判断
    if($type=="query"){
        //获取用户输入的值
        $enword=$_REQUEST['enword'];
       
        //判断是否进入查询
        $isEnter=false;
        //获取所有单词节点
        $words=$doc->getElementsByTagName("word");
        //遍历单词节点
        for($i=0;$i<$words->length;$i++){
            $word_node=$words->item($i);
            //获取不同的语种
            $en_word=getNodeVal($word_node,"en");
            $zh_word=getNodeVal($word_node,"zh");
            //查询
            if($enword==$en_word){
                $isEnter=true;
                echo $enword."的中文意思是:".getNodeVal($word_node,"zh");
                echo "<br/><a href='wordView.php'>返回继续查询</a>";
            }else if($enword==$zh_word){
                $isEnter=true;
                echo $enword."的英文意思是:".getNodeVal($word_node,"en");
                echo "<br/><a href='wordView.php'>返回继续查询</a>";
            }
        }

        if(!$isEnter){
            echo "无法查询";
            echo "<br/><a href='wordView.php'>返回继续查询</a>";
        }
    }else if($type=="添加"){
        //接收
        $enword=$_REQUEST['enword'];
        $zhword=$_REQUEST['zhword'];
        if(!empty($enword)&&!empty($zhword)){   
            //获取根节点
            $root=$doc->getElementsByTagName("words")->item(0);
           
            $word=$doc->createElement("word");
            $en=$doc->createElement("en",$enword);
            $zh=$doc->createElement("zh",$zhword);

            //进行挂载

            $root->appendChild($word);
            $word->appendChild($en);
            $word->appendChild($zh);

            //保存xml文件
            $doc->save("words.xml");
            echo "添加成功<br/><a href='wordView.php'>返回继续操作</a>";
        }else{
           
            echo "请输入单词";
            echo "<br/><a href='wordView.php'>返回继续操作</a>";
            exit();
        }
    }else if($type=="delete"){
       
        $word=$_REQUEST['word'];
        //获取所有单词节点
        $words=$doc->getElementsByTagName("word");
        $isEnter=false;
        //遍历单词节点
        for($i=0;$i<$words->length;$i++){
            $word_node=$words->item($i);
            //获取不同的语种
            $en_word=getNodeVal($word_node,"en");
            $zh_word=getNodeVal($word_node,"zh");
            //查询
            if($word==$en_word || $word==$zh_word){
                $isEnter=true;
                //找到父节点
                $word_node->parentNode->removeChild($word_node);
                $doc->save("words.xml");
                echo "删除成功<br/><a href='wordView.php'>返回继续操作</a>";
            }
        }

        if(!$isEnter){
            echo "操作失败";
            echo "<br/><a href='wordView.php'>返回继续操作</a>";
        }
    }else if($type="修改"){
        //接收
        $enword=$_REQUEST['enword'];
        $zhword=$_REQUEST['zhword'];
        if(!empty($enword)&&!empty($zhword)){   
            //获取所有单词节点
            $words=$doc->getElementsByTagName("word");
            //遍历单词节点
            $isEnter=false;
            for($i=0;$i<$words->length;$i++){
                $word_node=$words->item($i);
                //获取不同的语种
                $en_word=getNodeVal($word_node,"en");
                $zh_word=getNodeVal($word_node,"zh");
                //查询
                if($enword==$en_word && $zhword!=$zh_word){
                    //修改中文
                    $isEnter=true;
                    //获取zh节点
                    $zh=$word_node->getElementsByTagName("zh")->item(0);
                    $zh->nodeValue=$zhword;
                    $doc->save("words.xml");
                    echo "修改成功";
                    echo "<br/><a href='wordView.php'>返回继续操作</a>";
                }else if($enword!=$en_word && $zhword==$zh_word){
                    //修改因为
                    $isEnter=true;
                    $en=$word_node->getElementsByTagName("en")->item(0);
                    $en->nodeValue=$enword;
                    $doc->save("words.xml");
                    echo "修改成功";
                    echo "<br/><a href='wordView.php'>返回继续操作</a>";
                }   
            }

            if(!$isEnter){
                echo "没有做任何修改";
                echo "<br/><a href='wordView.php'>返回继续操作</a>";
            }

        }else{
            echo "请输入需要修改的单词";
            echo "<br/><a href='wordView.php'>返回继续操作</a>";
            exit();
        }
    }
   
    //获取节点的文本值
    function getNodeVal(&$MyNode,$tagName){
        return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;
    }
?>

words.xml

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<words><word><en>boy</en><zh>男孩</zh></word><word><en>girl</en><zh>女孩</zh></word><word><en>fire</en><zh>火</zh></word><word><en>word</en><zh>词库</zh></word></words>

xml文件是一种数据存储格式,下面小编给大家介绍php解析xml格式文件的多种方法总结介绍,DOMDocument是我们常用的解析xml一个不错的方法,下面我来给大家总结总结。

DOMElement

DOMElement DOMDocument::createElement ( string $name [, string $value ] )

创建节点元素
String $name:节点名
String $value:节点的值
8、 添加节点
•DOMNode DOMNode::appendChild ( DOMNode $newnode )
添加子节点
   DOMNode $newnode:新节点
在dom操作中,增删改操作必须依赖于父节点
9、 保存
•string DOMDocument::saveXML
保存至某个字符串中
•int DOMDocument::save ( string $filename )
保存至某个文件中
String $filename:文件名
10、 删除节点
•DOMNode DOMNode::removeChild ( DOMNode $oldnode )
删除节点
DOMNode $oldnode:要删除的节点
11、 更新节点

•DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
DOMNode $newnode:新节点
DOMNode $oldnode:原节点

12、 添加属性
•DOMAttr DOMElement::setAttribute( string $name , string $value )
string $name :属性名
string $value :属性值
13、 修改属性
      DOMAttr DOMElement::setAttribute( string $name , string $value )
string $name :属性名
string $value :属性值
14、 删除属性
•bool DOMElement::removeAttribute ( string $name )
string $name:要删除的属性名称
15、 获取属性
•string DOMElement::getAttribute ( string $name )
string $name:要获取的属性值的属性名

DOMDocument还是PHP5后推出的DOM扩展的一部分,可用来建立或解析html/xml,目前只支持utf-8编码。

 代码如下 复制代码

$xmlstring = <<<XML
<?xml version='1.0'?>
<document>
  <cmd attr='default'>login</cmd>
  <login>imdonkey</login>
</document>
XML;

$dom = new DOMDocument();
$dom->loadXML($xmlstring);
print_r(getArray($dom->documentElement));

function getArray($node) {
  $array = false;

  if ($node->hasAttributes()) {
    foreach ($node->attributes as $attr) {
      $array[$attr->nodeName] = $attr->nodeValue;
    }
  }

  if ($node->hasChildNodes()) {
    if ($node->childNodes->length == 1) {
      $array[$node->firstChild->nodeName] = getArray($node->firstChild);
    } else {
      foreach ($node->childNodes as $childNode) {
      if ($childNode->nodeType != XML_TEXT_NODE) {
        $array[$childNode->nodeName][] = getArray($childNode);
      }
    }
  }
  } else {
    return $node->nodeValue;
  }
  return $array;
}

 SimpleXML

SimpleXML是PHP5后提供的一套简单易用的xml工具集,可以把xml转换成方便处理的对象,也可以组织生成xml数据。不过它不适用于包含namespace的xml,而且要保证xml格式完整(well-formed)。它提供了三个方法:simplexml_import_dom、simplexml_load_file、simplexml_load_string,函数名很直观地说明了函数的作用。三个函数都返回SimpleXMLElement对象,数据的读取/添加都是通过SimpleXMLElement操作

 代码如下 复制代码


$string = <<<XML
<?xml version='1.0'?>
<document>
  <cmd>login</cmd>
  <login>imdonkey</login>
</document>
XML;

$xml = simplexml_load_string($string);
print_r($xml);
$login = $xml->login;//这里返回的依然是个SimpleXMLElement对象
print_r($login);
$login = (string) $xml->login;//在做数据比较时,注意要先强制转换
print_r($login);

SimpleXML的优点是开发简单,缺点是它会将整个xml载入内存后再进行处理,所以在解析超多内容的xml文档时可能会力不从心。如果是读取小文件,而且xml中也不包含namespace,那SimpleXML是很好的选择。


XMLReader

XMLReader也是PHP5之后的扩展(5.1后默认安装),它就像游标一样在文档流中移动,并在每个节点处停下来,操作起来很灵活。它提供了对输入的快速和非缓存的流式访问,可以读取流或文档,使用户从中提取数据,并跳过对应用程序没有意义的记录。
以一个利用google天气api获取信息的例子展示下XMLReader的使用,这里也只涉及到一小部分函数,更多还请参考官方文档。

 代码如下 复制代码

$xml_uri = 'http://www.google.com/ig/api?weather=Beijing&hl=zh-cn';
$current = array();
$forecast = array();

$reader = new XMLReader();
$reader->open($xml_uri, 'gbk');
while ($reader->read()) {
  //get current data
  if ($reader->name == "current_conditions" && $reader->nodeType == XMLReader::ELEMENT) {
    while($reader->read() && $reader->name != "current_conditions") {
      $name = $reader->name;
      $value = $reader->getAttribute('data');
      $current[$name] = $value;
    }
  }

  //get forecast data
  if ($reader->name == "forecast_conditions" && $reader->nodeType == XMLReader::ELEMENT) {
    $sub_forecast = array();
    while($reader->read() && $reader->name != "forecast_conditions") {
      $name = $reader->name;
      $value = $reader->getAttribute('data');
      $sub_forecast[$name] = $value;
    }
    $forecast[] = $sub_forecast;
  }
}
$reader->close();

XMLReader和XML Parser类似,都是边读边操作,较大的差异在于SAX模型是一个“推送”模型,其中分析器将事件推到应用程序,在每次读取新节点时通知应用程序,而使用XmlReader的应用程序可以随意从读取器提取节点,可控性更好。
由于XMLReader基于libxml,所以有些函数要参考文档看看是否适用于你的libxml版本。

本文章来给大家介绍在php中生成和获取XML格式数据代码,生成xml我们使用DOMDocument,读取xml我们使用XMLReader即可,下面我分别给大家介绍。

生成XML格式数据

我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。

 代码如下 复制代码

CREATE TABLE `student` ( 
  `id` int(11) NOT NULL auto_increment, 
  `name` varchar(50) NOT NULL, 
  `sex` varchar(10) NOT NULL, 
  `age` smallint(3) NOT NULL default '0', 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 

首先,建立createXML.php文件,先连接数据库,获取数据。

 代码如下 复制代码

include_once ("connect.php"); //连接数据库 
 
$sql = "select * from student"; 
$result = mysql_query($sql) or die("Invalid query: " . mysql_error()); 
while ($row = mysql_fetch_array($result)) { 
    $arr[] = array( 
        'name' => $row['name'], 
        'sex' => $row['sex'], 
        'age' => $row['age'] 
    ); 

这个时候,数据就保存在$arr中,你可以使用print_r打印下数据测试。

接着,建立xml,循环数组,将数据写入到xml对应的节点中。

 代码如下 复制代码

$doc = new DOMDocument('1.0', 'utf-8');  // 声明版本和编码 
$doc->formatOutput = true; 
 
$r = $doc->createElement("root"); 
$doc->appendChild($r); 
 
foreach ($arr as $dat) { 
    $b = $doc->createElement("data"); 
 
    $name = $doc->createElement("name"); 
    $name->appendChild($doc->createTextNode($dat['name'])); 
    $b->appendChild($name); 
 
    $sex = $doc->createElement("sex"); 
    $sex->appendChild($doc->createTextNode($dat['sex'])); 
    $b->appendChild($sex); 
 
    $age = $doc->createElement("age"); 
    $age->appendChild($doc->createTextNode($dat['age'])); 
    $b->appendChild($age); 
 
    $r->appendChild($b); 

 
echo $doc->saveXML(); 

我们调用了PHP内置的类DOMDocument来处理与生成xml。最终生成的xml格式请点击这里看效果

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>  
<root>  
  <data>  
    <name>李王皓</name>  
    <sex>男</sex>  
    <age>21</age>  
  </data> 
  ... 
</root> 

获取XML格式数据

现在我们假设要从第三方获取学生信息,数据格式是XML,我们需要使用PHP解析XML,然后将解析后的数据显示或者写入本地数据库。而这里关键的一步是解析XML。

PHP有很多中方法可以解析XML,其中PHP提供了内置的XMLReader类可以循序地浏览过xml档案的节点,你可以想像成游标走过整份文件的节点,并抓取需要的内容。使用XMLReader是高效的,尤其是读取非常大的xml数据,相对其他方法,使用XMLReader消耗内存非常少。

 代码如下 复制代码

header("Content-type:text/html; Charset=utf-8");  
$url = "importXML/createXML.php";   
$reader = new XMLReader();  //实例化XMLReader 
$reader->open($url); //获取xml 
$i=1; 
while ($reader->read()) {     
  if ($reader->nodeType == XMLReader::TEXT) { //判断node类型 
     $m = $i%3; 
     if($m==1) 
         $name = $reader->value;  //读取node值 
     if($m==2) 
         $sex = $reader->value; 
     if($m==0){ 
         $age = $reader->value; 
         $arr[] = array( 
             'name' => $name, 
             'sex' => $sex, 
             'age' => $age 
         ); 
     } 
     $i++; 
  } 

//print_r($arr); 

为了将数据name,sex和age分开,我们使用$i%3来判断取模,因为在获取的xml中,节点data下的信息是以3个子节点存在的。

[!--infotagslink--]

相关文章

  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • 用js的document.write输出的广告无阻塞加载的方法

    一、广告代码分析很多第三方的广告系统都是使用document.write来加载广告,如下面的一个javascript的广告链接。复制代码 代码如下:<script type="text/javascript" src="http://gg.5173.com/adpolestar/5173/;ap=2EBE5...2014-06-07
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • C# 向二进制文件进行读写的操作方法

    该例子使用 BinaryStream 和 BinaryWriter 对二进制文件进行读写操作先上代码再根据我理解的所分享给各位朋友...2020-06-25
  • PHP实现今天是星期几的几种写法

    复制代码 代码如下: // 第一种写法 $da = date("w"); if( $da == "1" ){ echo "今天是星期一"; }else if( $da == "2" ){ echo "今天是星期二"; }else if( $da == "3" ){ echo "今天是星期三"; }else if( $da == "4"...2013-10-04
  • 原生js实现fadein 和 fadeout淡入淡出效果

    js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。 先来看看设置透明度的兼容性代码: 复制代码 代码如下: function setOpacity(ele, opacity) { if (...2014-06-07
  • C#读写共享文件夹的方法

    这篇文章主要为大家详细介绍了C#读写共享文件夹的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 解决docker挂载的目录无法读写问题

    这篇文章主要介绍了解决docker挂载的目录无法读写问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-19
  • Go语言使用读写OPC详解

    这篇文章主要介绍了Go语言使用读写OPC详解,图文讲解的很清晰,有感兴趣的同学可以学习下...2021-03-05
  • 使用Python文件读写,自定义分隔符(custom delimiter)

    这篇文章主要介绍了使用Python文件读写,自定义分隔符(custom delimiter),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-06
  • Android中用HttpClient实现Http请求通信

    本文我们需要解决的问题是如何实现Http请求来实现通信,解决Android 2.3 版本以后无法使用Http请求问题,下面请看正文。 Android开发中使用HttpClient来开发Http程序...2016-09-20
  • mysql存储过程实现split示例

    复制代码 代码如下:call PROCEDURE_split('分享,代码,片段',',');select * from splittable;复制代码 代码如下:drop PROCEDURE if exists procedure_split;CREATE PROCEDURE `procedure_split`( inputstring varc...2014-05-31
  • 分享C#操作内存读写方法的主要实现代码

    这篇文章介绍了C#操作内存读写方法的主要实现代码,下面让我们来看看具体的实例实现,有需要的朋友可以参考一下...2020-06-25
  • R语言开发之CSV文件的读写操作实现

    这篇文章主要介绍了R语言开发之CSV文件的读写操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-06
  • css实现文字发光效果方法汇总

    文字发光效果我们可以直接使用css来实现了今天我们来看一篇关于文字发光效果的例子,希望这篇文章能够帮助到各位朋友哦。 前言 我录制的慕课网视频一直没有上线,慕...2016-09-14
  • PHP+Mysql+Ajax+JS实现省市区三级联动

    基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省、市、区获取方法类似,PHP中通过参数不同执行不同的select语句。index.html代码:复制...2014-05-31