Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

inforicky

[Resolvido] combobox

Recommended Posts

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....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo, estou com a mesma duvida que você estava antes aí...porém gostaria de saber, como você resolveu o seu.

 

Bom...irei postar a parada aki caso alguem souber como resolver...

/*metodo consultar estado*/

 

CODE

 

public function consultar(){

 

$db = new conexao();

$db->abrir();

 

$sql = "select `estado`.`est_codigo`,`estado`.`est_sigla` from `estado` order by `estado`.`est_sigla`";

 

//EXECUTA A QUERY

$resultado = $db->consulta($sql);

 

$busca = mysql_num_rows($resultado);

 

for($i=0; $i<$busca; $i++) { ?>

<option value="<? echo mysql_result($resultado, $i, "est_codigo"); ?>">

<? echo mysql_result($resultado, $i, "est_sigla"); ?></option>

<? }

}

}

index.php

CODE

----------------------------------------------------------------------

Arquivo .............: AJAX + PHP

Desenvolvido por ....: Júlio César Martini

Matéria .............: Artigo 127 - www.imasters.com.br

Criado em ..........: 14/03/2006

----------------------------------------------------------------------

/*Tutorial adaptado para o meu caso, mais a ideia peguei do Júlio Cesar*/

<script src="script.js"></script>

 

Estado: <select name="estado" onChange="Dados(this.value);">

<?

$estado->consultar();

 

?>

 

</select> <a href="../estado/form_estado.php"><input type="button" name="novo" value="Novo"></a><br><br>

Municipio: <select name="listCidades" onChange="alert(this.value);">

 

<option id="opcoes" value="0">--Primeiro selecione o estado--</option>

 

</select> <a href="../municipio/form_municipio.php"><input type="button" name="novo" value="Novo"></a><br><br>

até aki...tá as mil maravilhas, está consultando os estados de boa...mas...em diante...rsssss

scripts.js

CODE

 

----------------------------------------------------------------------

Arquivo .............: AJAX + PHP

Desenvolvido por ....: Júlio César Martini

Matéria .............: Artigo 127 - www.imasters.com.br

Criado em ..........: 14/03/2006

----------------------------------------------------------------------

/*Tutorial adaptado para o meu caso, mais a ideia peguei do Júlio Cesar*/

 

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", "cidade.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--";

}

}

 

Bucando os municipios

CODE

 

<?php

 

----------------------------------------------------------------------

Arquivo .............: AJAX + PHP

Desenvolvido por ....: Júlio César Martini

Matéria .............: Artigo 127 - www.imasters.com.br

Criado em ..........: 14/03/2006

----------------------------------------------------------------------

/*Tutorial adaptado para o meu caso, mais a ideia peguei do Júlio Cesar*/

 

require_once $_SERVER['DOCUMENT_ROOT']."/conexao.php";

 

$geral = new geral();

$geral->conexao();

$conexao = new conexao();

 

$Estado = $_POST["estado"];

 

//QUERY

$sql = "SELECT mun_codigo, mun_descricao FROM municipio WHERE est_codigo = ".$Estado." ORDER BY mun_descricao";

 

//EXECUTA A QUERY

$resultado = $db->consulta($sql);

 

$busca = mysql_num_rows($resultado);

 

//VERIFICA SE VOLTOU ALGO

if($busca) {

//XML

$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";

$xml .= "<cidades>\n";

 

//PERCORRE ARRAY

for($i=0; $i<$busca; $i++) {

$codigo = mysql_result($resultado, $i, "mun_codigo");

$descricao = mysql_result($resultado, $i, "mun_descricao");

$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;

?>

 

Bom...o que acontece é que...seleciona os estados mas não puxa os municipios...apenas dá tipo um refresh no comobox da cidade, mas não aparece nada...além do mais...nem sei se está fazendo a consulta mesmo, mais esse é o problema...rsss

 

Bom...caso alguem possa me dar uma maozinha...ficarei grato...

 

E obrigado desej já... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.