<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Busca</title>
</head>
<body>
<?php
include "busca/EscolhePais.php";
include "busca/EscolheEstado.php";
?>
<form action="Busca.php" method="post">
<table width="100%">
<tr>
<tudo width="23%" valign="top">
Escolha:<br>
<select name="listTabelas" onChange="EscolhePais(this.value);">
<option value="0">Alugar ou Comprar</option>
<option value="imoveiscadastroaluguel">Alugue</option>
<option value="imoveiscadastrovenda">Compre</option>
</select> <br>
</tudo>
<tudo width="40%" valign="top">
Pais:<br>
<select name="listPaises" onChange="EscolheEstado(this.value);">
<option id="opcoes" value="0">Primeiro selecione Alugar ou Comprar</option>
</select> <br>
Estado:<br>
<select name="listEstados">
<option id="opcoesestados" value="0">Primeiro selecione o praís</option>
</select>
</tudo>
</tr>
</table>
</form>
</body>
</html>
É de um script com ajax. Segue as paginas EscolhePais.php e EscolheEstado.php
EscolhePais.php
<script language="JavaScript">
function EscolhePais(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].listPaises.options.length = 1;
idOpcao = document.getElementById("opcoes");
ajax.open("POST", "busca/paises.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 Alugar ou Comprar";
}
}
}
//passa o código do Pais escolhido
var params = "tabela="+valor;
ajax.send(params);
}
}
function processXML(obj){
//pega a tag cidade
var dataArray = obj.getElementsByTagName("tpais");
//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[i];
//contéudo dos campos no arquivo XML
var ID = item.getElementsByTagName("Id")[0].firstChild.nodeValue;
var Pais = item.getElementsByTagName("Pais")[0].firstChild.nodeValue;
idOpcao.innerHTML = "Selecione o Pais";
//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 = Pais;
//atribui um texto
novo.text = Pais;
//finalmente adiciona o novo elemento
document.forms[0].listPaises.options.add(novo);
}
}
else {
//caso o XML volte vazio, printa a mensagem abaixo
idOpcao.innerHTML = "Primeiro selecione Alugar ou Comprar";
}
}
</script>
EscolheEstado.php
<script language="JavaScript">
function EscolheEstado(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].listEstados.options.length = 1;
idOpcaoEstados = document.getElementById("opcoesestados");
ajax.open("POST", "busca/estados.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) {
idOpcaoEstados.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
idOpcaoEstados.innerHTML = "Primeiro selecione o praís";
}
}
}
//passa o código do Pais escolhido
var params = "pais="+valor;
ajax.send(params);
}
}
function processXML(obj){
//pega a tag cidade
var dataArray = obj.getElementsByTagName("testado");
//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[i];
//contéudo dos campos no arquivo XML
var ID = item.getElementsByTagName("Id")[0].firstChild.nodeValue;
var Estado = item.getElementsByTagName("Estado")[0].firstChild.nodeValue;
idOpcaoEstados.innerHTML = "Selecione o Estado";
//cria um novo option dinamicamente
var novo = document.createElement("option");
//atribui um ID a esse elemento
novo.setAttribute("id", "opcoesestados");
//atribui um valor
novo.value = Estado;
//atribui um texto
novo.text = Estado;
//finalmente adiciona o novo elemento
document.forms[0].listEstados.options.add(novo);
}
}
else {
//caso o XML volte vazio, printa a mensagem abaixo
idOpcaoEstados.innerHTML = "Primeiro selecione o praís";
}
}
</script>
<?
//CONECTA AO MYSQL
require_once("../../global/conexao.php");
//RECEBE PARÂMETRO
$pais = $_POST["pais"];
$tabela = $_POST["tabela"];
//QUERY
$sql = "SELECT * FROM $tabela where Pais = '$pais'";
//$sql = "SELECT * FROM imoveiscadastrovenda where Pais = '$pais'";
//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 .= "<testados>\n";
//PERCORRE ARRAY
for($i=0; $i<$row; $i++) {
$Id = mysql_result($sql, $i, "Id");
$Estado = mysql_result($sql, $i, "Estado");
$xml .= "<testado>\n";
$xml .= "<Id>".$Id."</Id>\n";
$xml .= "<Estado>".$Estado."</Estado>\n";
$xml .= "</testado>\n";
}//FECHA FOR
$xml.= "</testados>\n";
//CABEÇALHO
Header("Content-type: application/xml; charset=iso-8859-1");
}//FECHA IF (row)
//PRINTA O RESULTADO
echo $xml;
?>
O Problema é que, o quando eu faço só o carregamento do combo dos paises quando escolho a tabela=alugue ou compre vai bem mas se eu escolher o pais para popular o combobox dos estados aí da erro;
idOpcaoEstados não esta definido na linha 175.
Essa linha esta no arquivo EscolheEstado.php
idOpcaoEstados.innerHTML = "Primeiro selecione o praís";
Na realidade, só de eu incluir a linha
include "busca/EscolheEstado.php";
No arquivo busca.php já da esse erro.
To um tempao querendo resolver esse problema e nada.
Pergunta
Carlos Rocha
Ola pessoal. To cum seguinte problema:
Esse Código=
É de um script com ajax. Segue as paginas EscolhePais.php e EscolheEstado.php EscolhePais.php EscolheEstado.php Paises.php Estados.php O Problema é que, o quando eu faço só o carregamento do combo dos paises quando escolho a tabela=alugue ou compre vai bem mas se eu escolher o pais para popular o combobox dos estados aí da erro; Na realidade, só de eu incluir a linhaNo arquivo busca.php já da esse erro.
To um tempao querendo resolver esse problema e nada.
Como carregar combobox com ajax?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.