澳门新葡萄京娱乐场ajax+php实例动态二级联菜单效果

下面的两个文件copy到同一个文件下,通过web路径访问index.html看看吧,这个是通过iframe来实现的连动更新,list.php目前的内容比较简单,你看通过list.php来进行数据库查询,然后显示出查询的结果列表。index.htmlbodyform
name=”myfrm”select name=”mlist” onchange=”changes();”option
value=”0″请选择…/optionoption value=”北京”北京/optionoption
value=”通化”通化/option/selectnbsp;select name=”slist”/selectiframe
src=”list.php?city=” /iframescript language=”javascript”function
changes(){ frame.location.href = “list.php?city=”
document.myfrm.mlist.value;}/script/form/bodylist.php?php $data =
array(“北京”=array(“小强”,”旺财”,”小强他爹”),
“通化”=array(“小温”,”小宋”,”他们儿子”),); $city = $_GET[“city”];
$result = $data[$city]; $str = “script language=”javascript”list =
parent.document.myfrm.slist;list.length = 0;”; if($result==null) $str .=
“tmp = new Option(“……”, “”);list.options[0] = tmp;”; else
foreach($result as $i = $value) $str .= “tmp = new Option(“{$value}”,
“{$value}”);list.options[$i] = tmp;”; $str .= “/script”; echo $str;?

绝对原创  
测试地址: 

main.php
<script language=”javascript”
src=”initajax.js”></script><!–InitAjax()–>
<script>
<!–

测试页代码:
复制代码 代码如下:
 

function getoption(select1,target)
{
    if(select1.value!=0){
        //select1是提交数据的来源的select菜单名
        var url = “getoption.php?pid=”+select1.value;//取得xml的url
        //alert(url);
        var ajax = InitAjax();
        var i = 0;
        ajax.open(“GET”, url, true);
        ajax.onreadystatechange = function() {
            //如果执行是状态正常,那么就把返回的内容赋值给指定的地方
            if (ajax.readyState == 4 && ajax.status == 200) {
                var obj = ajax.responseXML;
                var properties = obj.getElementsByTagName(“property”);
                var name,value;
                target.options.length = 1;
                for (var i=0,x=1;i<properties.length;i++,x++) {
                    name =
properties[i].getElementsByTagName(“name”)[0].firstChild.nodeValue;
                    value =
properties[i].getElementsByTagName(“value”)[0].firstChild.nodeValue;
                    target.options[x] = new Option();
                    target.options[x].text = name;
                    target.options[x].value = value;
                }
            }
        }
        ajax.send(null);
    }
}

 

<form method=”post” name=”form” action=”index.php”>
<select name=”level1″
onchange=”getoption(document.form.level1,document.form.level2);”/>
<option selected=”ture” value=”0″>===选择===</option>
<?
if ($nrows>0){
    for ($i=0;$i<$nrows;$i++){
        echo “<option
value=”{$results[ID][$i]}”>{$results[NAME][$i]}</option>”;
    }
}
?>
</select>
<select name=”level2″
onchange=”getoption(document.form.level2,document.form.level3);”>
<option selected=”ture” value=”0″>===选择===</option>
</select>

 

iniajax.js:
function InitAjax()
{
    var ajax=false;
    try {
        ajax = new ActiveXObject(“Msxml2.XMLHTTP”);
    } catch (e) {
        try {
            ajax = new ActiveXObject(“Microsoft.XMLHTTP”);
        } catch (E) {
            ajax = false;
        }
    }
    if (!ajax && typeof XMLHttpRequest!=’undefined’) {
        ajax = new XMLHttpRequest();
    }
    return ajax;
}

php+ajax动态生成下拉菜单

getoption.php:
<?php
if($pid=$_GET[“pid”])
{
    header(“Content-type: text/xml;charset=GB2312”);
    echo “<?xml version=”1.0″ encoding=”GB2312″?>”;
    include(“./oracle.inc”);
    $sql=”select * from AJAXTEST where PARENTID = $pid”;
    //echo $sql;
    $stmt=ociparse($handle,$sql);
    ociexecute($stmt);
    ocicommit($handle);
    ocilogoff();
    $nrows=ocifetchstatement($stmt,$results);
    echo “<properties>”;
    //echo “<row>{$nrows}</row>”;
    for ($i=0;$i<$nrows;$i++){
    echo “<property>”;
    echo “<value>{$results[ID][$i]}</value>”;
    echo “<name>{$results[NAME][$i]}</name>”;
    echo “</property>”;
    }
    echo “</properties>”;
}
?>

 

 
 

 

{$regionss(中华人民共和国)}

 

regionss 函数代码:
QUOTE:
复制代码
代码如下://省市地3级联动下拉菜单函数 regionss 省.市.地   
function regionss($country=”中华人民共和国”)  
{       
        global $db; $i = 1; 
        $text=”省/市/自治区n”; 

        $result = $db->query(“SELECT province FROM “.TABLE_PROVINCE.” WHERE country=’$country’ ORDER BY provinceid”); 
        while($r = $db->fetch_array($result)) 
         { 
  $text .= “”.$r[‘province’].” “; 
  $i++; 
         } 
        $text.=””;  
        $text.=”&nbsp市/县/区n”; 
        $text.=”县级市/县n”;    
        return $text; 


regions.js 的代码:

复制代码
代码如下://var ab = new Array();  
var xmlHttp;  
var xmlHttpa; 
function createXMLHttpRequest() {  
    if (window.ActiveXObject) {  
        xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”);  
    }   
    else if (window.XMLHttpRequest) {  
        xmlHttp = new XMLHttpRequest();  
    }  
}  
function createXMLHttpRequesta() {  
    if (window.ActiveXObject) {  
        xmlHttpa = new ActiveXObject(“Microsoft.XMLHTTP”);  
    }   
    else if (window.XMLHttpRequest) {  
        xmlHttpa = new XMLHttpRequest();  
    }  
}   

function startRequest() {  
    createXMLHttpRequest();  
    createXMLHttpRequesta();  
    xmlHttp.onreadystatechange = handleStateChange;  
    xmlHttpa.onreadystatechange = handleStateChangearea;  
    document.getElementById(‘select2’).options.length = 0;  
    document.getElementById(‘select3’).options.length = 0; 
    var url = document.form1.select1.value;  
    var qurl = “/regions.php?province=”+url+”&time=”+new Date().getTime();  
    xmlHttp.open(“GET”, qurl, true);  
    xmlHttp.send(null);  
    //setTimeout(“startRequest()”,2000);  
}  

function handleStateChange() {  
    if(xmlHttp.readyState == 4) {  
        if(xmlHttp.status == 200) {  
         var obj = document.getElementById(‘select2’); //将服务器返回的字符串写到页面中ID为select2的区域     
            obja = document.getElementById(‘select3’); //将服务器返回的字符串写到页面中ID为select3的区域    
            eval(xmlHttp.responseText);    

        }  
    }  
}  
function handleStateChangearea() {          
            eval(xmlHttpa.responseText);           
}  
//var ab = new Array();  

function startRequesta() {  
    createXMLHttpRequesta();  
    xmlHttpa.onreadystatechange = handleStateChangea;  
    document.getElementById(‘select3’).options.length = 0;  
    var url = document.form1.select2.value;  
    var qurl = “/regions.php?city=”+url+”&time=”+new Date().getTime();  
    xmlHttpa.open(“GET”, qurl, true);  
    xmlHttpa.send(null);  
    //setTimeout(“startRequest()”,2000);  
}  

function handleStateChangea() {  
    if(xmlHttpa.readyState == 4) {  
        if(xmlHttpa.status == 200) {  
         var obja = document.getElementById(‘select3’);  
            eval(xmlHttpa.responseText);   
        //将服务器返回的字符串写到页面中ID为select3的区域 

        }  
    }  

数据岛 regions.php 页面代码

复制代码 代码如下:

require “common.php”;  
$city = $city ? $city : “”; 
$area = $area ? $area : “”; 
if($province && $city==”){ 
  global $db; $i = 1; 

  $result = $db->query(“SELECT DISTINCT city FROM “.TABLE_CITY.” WHERE province=’$province’ ORDER BY cityid”); 
  while($r = $db->fetch_array($result)) 
    { 
       $r[city]=iconv(‘gb2312′,’UTF-8’,$r[city]); 
echo “obj.options[obj.options.length] = new Option(‘”.$r[city].”‘,'”.$r[city].”‘);n”;  
$i++; 
    } 
  $resultarea = $db->query(“SELECT DISTINCT city FROM “.TABLE_CITY.” WHERE province=’$province’ ORDER BY cityid”); 
  $r = $db->fetch_array($resultarea); 
  $city = $r[city]; 
  $resulta = $db->query(“SELECT DISTINCT area FROM “.TABLE_CITY.” WHERE city=’$city’ ORDER BY cityid”); 
   while($ra = $db->fetch_array($resulta)) 
    { 
       $ra[area]=iconv(‘gb2312′,’UTF-8’,$ra[area]); 
echo “obja.options[obja.options.length] = new Option(‘”.$ra[area].”‘,'”.$ra[area].”‘);n”;  
$i++; 
    } 


if($city && $province==”){ 
   global $db; $i = 1; 

   $result = $db->query(“SELECT DISTINCT area FROM “.TABLE_CITY.” WHERE city=’$city’ ORDER BY cityid”); 
   while($r = $db->fetch_array($result)) 
    { 
       $r[area]=iconv(‘gb2312′,’UTF-8’,$r[area]); 
echo “obja.options[obja.options.length] = new Option(‘”.$r[area].”‘,'”.$r[area].”‘);n”;  
$i++; 
    } 

?> 
地址信息数据库:

     采用的是phpcms3.0里自带的数据库,我没有进行任何改动

本程序可以在phpcms3.0里直接使用,若在其他地方使用请自己修改

发表评论

电子邮件地址不会被公开。 必填项已用*标注