Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando adaptar de acordo com o tuto
http://imasters.com.br/artigo/3918/jav...os_sem_refresh/
o primeiro combo carrega e seleciona seleciona ok
<?
/*
----------------------------------------------------------------------
Arquivo .............: AJAX + PHP
Desenvolvido por ....: Júlio César Martini
Matéria .............: Artigo 127 - www.imasters.com.br
Criado em ..........: 14/03/2006
----------------------------------------------------------------------
*/
//CONECTA AO MYSQL
require_once("conecta.php");
//PEGA OS ESTADOS
$sql = "
SELECT a.id_estado, a.dsc_estado, a.sigl_estado
FROM estados a
ORDER BY a.dsc_estado";
//EXECUTA A QUERY
$sql = mysql_query($sql);
$row = mysql_num_rows($sql); ?>
<script language="JavaScript">
function Dados(valor) {
//verifica se o browser tem suporte a ajax
try {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
ajax = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
}
//se tiver suporte ajax
if(ajax) {
//deixa apenas o elemento 1 no option, os outros são excluídos
document.forms[0].listCidades.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "cidades.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function() {
//enquanto estiver processando...emite a msg de carregando
if(ajax.readyState == 1) {
idOpcao.innerHTML = "Carregando...!";
}
//após ser processado - chama função processXML que vai varrer os dados
if(ajax.readyState == 4 ) {
if(ajax.responseXML) {
processXML(ajax.responseXML);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcao.innerHTML = "--Primeiro selecione o estado--";
}
}
}
//passa o código do estado escolhido
var params = "estado="+valor;
ajax.send(params);
}
}
function processXML(obj){
//pega a tag cidade
var dataArray = obj.getElementsByTagName("cidade");
//total de elementos contidos na tag cidade
if(dataArray.length > 0) {
//percorre o arquivo XML paara extrair os dados
for(var i = 0 ; i < dataArray.length ; i++) {
var item = dataArray*;*
//contéudo dos campos no arquivo XML
var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
idOpcao.innerHTML = "--Selecione uma das opções abaixo--";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao;
//finalmente adiciona o novo elemento
document.forms[0].listCidades.options.add(novo);
}
}
else {
//caso o XML volte vazio, printa a mensagem abaixo
idOpcao.innerHTML = "--Primeiro selecione o estado--";
}
}
</script>
<html>
<head>
<title>127º artigo PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<h1>127º artigo: AJAX + PHP</h1>
Carregando cidades sem dar refresh na página.
<br><br>
<form name="frmAjax">
Estado:
<select name="listEstados" onChange="Dados(this.value);">
<option value="0">--Selecione o estado >></option>
<? for($i=0; $i<$row; $i++) { ?>
<option value="<? echo mysql_result($sql, $i, "id_estado"); ?>">
<? echo mysql_result($sql, $i, "dsc_estado"); ?></option>
<? } ?>
</select>
<br><br>
Cidade:
<select name="listCidades" onChange="alert(this.value);">
<option id="opcoes" value="0">--Primeiro selecione o estado--</option>
</select>
</form>
</body>
</html>
o meu : :clap: :joia:
<?
/*
----------------------------------------------------------------------
Arquivo .............: AJAX + PHP
Desenvolvido por ....: Júlio César Martini
Matéria .............: Artigo 127 - www.imasters.com.br
Criado em ..........: 14/03/2006
----------------------------------------------------------------------
*/
//CONECTA AO MYSQL
require_once("conecta.php");
//PEGA OS ESTADOS
$sql = "SELECT distinct nommar FROM cadite order by nommar asc";
//EXECUTA A QUERY
$sql = mysql_query($sql);
$row = mysql_num_rows($sql); ?>
<script language="JavaScript">
function Dados(valor) {
//verifica se o browser tem suporte a ajax
try {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
ajax = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
}
//se tiver suporte ajax
if(ajax) {
//deixa apenas o elemento 1 no option, os outros são excluídos
document.forms[0].listCidades.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "veiculos.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function() {
//enquanto estiver processando...emite a msg de carregando
if(ajax.readyState == 1) {
idOpcao.innerHTML = "Carregando...!";
}
//após ser processado - chama função processXML que vai varrer os dados
if(ajax.readyState == 4 ) {
if(ajax.responseXML) {
processXML(ajax.responseXML);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
idOpcao.innerHTML = "--Primeiro selecione a marca--";
}
}
}
//passa o código do estado escolhido
var params = "nommar="+valor;
ajax.send(params);
}
}
function processXML(obj){
//pega a tag cidade
var dataArray = obj.getElementsByTagName("veiculos");
//total de elementos contidos na tag cidade
if(dataArray.length > 0) {
//percorre o arquivo XML paara extrair os dados
for(var i = 0 ; i < dataArray.length ; i++) {
var item = dataArray*;*
//contéudo dos campos no arquivo XML
var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
idOpcao.innerHTML = "--Selecione uma das opções abaixo--";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoes");
//atribui um valor
novo.value = codigo;
//atribui um texto
novo.text = descricao;
//finalmente adiciona o novo elemento
document.forms[0].listCidades.options.add(novo);
}
}
else {
//caso o XML volte vazio, printa a mensagem abaixo
idOpcao.innerHTML = "--Primeiro selecione a marca--";
}
}
</script>
<html>
<head>
<title>COMBO BOX</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<h1>COMBO BOX: AJAX + PHP</h1>
Carregando sem dar refresh na página.
<br><br>
<form name="frmAjax">
Marca:
<select name="listEstados" onChange="Dados(this.value);">
<option value="0">--Selecione a marca >></option>
<? for($i=0; $i<$row; $i++) { ?>
<option value="<? echo mysql_result($sql, $i, "id_marca"); ?>">
<? echo mysql_result($sql, $i, "nommar"); ?></option>
<? } ?>
</select>
<br><br>
Veiculo:
<select name="listCidades" onChange="alert(this.value);">
<option id="opcoes" value="0">--Primeiro selecione a marca--</option>
</select>
</form>
</body>
</html>
o segunco combo:
<?
/******************************************************************
// ARQUIVO ...: Monta o XML das Cidades
// BY ........: Júlio César Martini
// DATA ......: 14/03/2006
/******************************************************************/
//CONECTA AO MYSQL
require_once("conecta.php");
//RECEBE PARÃMETRO
$pEstado = $_POST["estado"];
//QUERY
$sql = "
SELECT a.id_cidade, a.dsc_cidade
FROM cidades a
WHERE a.cod_estado = ".$pEstado."
ORDER BY a.dsc_cidade";
//EXECUTA A QUERY
$sql = mysql_query($sql);
$row = mysql_num_rows($sql);
//VERIFICA SE VOLTOU ALGO
if($row) {
//XML
$xml = "<?xml version="1.0" encoding="ISO-8859-1"?>n";
$xml .= "<cidades>n";
//PERCORRE ARRAY
for($i=0; $i<$row; $i++) {
$codigo = mysql_result($sql, $i, "id_cidade");
$descricao = mysql_result($sql, $i, "dsc_cidade");
$xml .= "<cidade>n";
$xml .= "<codigo>".$codigo."</codigo>n";
$xml .= "<descricao>".$descricao."</descricao>n";
$xml .= "</cidade>n";
}//FECHA FOR
$xml.= "</cidades>n";
//CABEÇALHO
Header("Content-type: application/xml; charset=iso-8859-1");
}//FECHA IF (row)
//PRINTA O RESULTADO
echo $xml;
?>
o meu : :clap: :joia:
<?
/******************************************************************
// ARQUIVO ...: Monta o XML das Cidades
// BY ........: Júlio César Martini
// DATA ......: 14/03/2006
/******************************************************************/
//CONECTA AO MYSQL
require_once("conecta.php");
//RECEBE PARÃMETRO
$marca = $_POST["nommar"];
//QUERY
$sql = "SELECT veiculo FROM veiculos where id_marca = ".$marca." order by veiculo";
//EXECUTA A QUERY
$sql = mysql_query($sql);
$row = mysql_num_rows($sql);
//VERIFICA SE VOLTOU ALGO
if($row) {
//XML
$xml = "<?xml version="1.0" encoding="ISO-8859-1"?>n";
$xml .= "<veiculos>n";
//PERCORRE ARRAY
for($i=0; $i<$row; $i++) {
$id_marca = mysql_result($sql, $i, "id_marca");
$veiculo = mysql_result($sql, $i, "veiculo");
$xml .= "<cidade>n";
$xml .= "<marca>".$id_marca."</marca>n";
$xml .= "<veiculo>".$veiculo."</veiculo>n";
$xml .= "</cidade>n";
}//FECHA FOR
$xml.= "</veiculos>n";
//CABEÇALHO
Header("Content-type: application/xml; charset=iso-8859-1");
}//FECHA IF (row)
//PRINTA O RESULTADO
echo $xml;
?>
me ajudem por favor....
Carregando comentários...