Ir para conteúdo

Arquivado

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

Leandro Pontes

Atualizar valor em duas combo

Recommended Posts

Pessoal sou novo aki no fórum e a pouco tempo to programando em PHP.

 

Estou tentando atualizar uma combo dinamicamente. Através do valor da da primeira combo, a segunda combo só aparecer os valores referente a primeira.

Pesquisei em muitos sites mas ainda não consegui fazer funcionar, fiz o seguinte:

 

Na minha form principal, na primeira combo, na opção onchange, chamo uma função em java script para poder carregar uma pagina PHP onde vou trazer os valores que quero colocar na segunda combo. Mas parece que a opção onchange não está funcionado, pois não está chamando a função. Vou colocar parte do código que escrevi, por favor me ajudem.

 

FORM PRINCIPAL(onde estão os dois combos)

 

<html>

<head>

<title>Cadastro de Contratos</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">

function busca_pacotes(plano){

// Aqui indica o arquivo carrega_pacotes.php

// passando o id do plano selecionado

var url = "carrega_pacote.php?plano="+plano

 

// Aqui o objeto que receberá os options

// com os valores dos pacotes

var obj = document.getElementById("pacote");

 

//Aqui começa a mágica do ajax

var http_req = false;

try{

http_req = new XMLHttpRequest();

}catch(e){

try{

http_req = new ActiveXObject("Msxml2.XMLHTTP");

}catch(e){

try{

http_req = new ActiveXObject("Microsoft.XMLHTTP");

}catch(e){

alert("Sem XMLHttpRequest disponível!");

}

}

}

var req = http_req;

 

req.open("get",url,false);

req.send(null);

 

// Se o ajax retornou valores

if(req.status==200){

try{

// joga os valores em result

var result = eval(req.responseText);

 

// Remove os options do select

var iSize = obj.length;

for(var i = 0; i<iSize; i++)

obj.remove(1);

// Aqui coloco obj.remove(1), porque não quero

// que seja removido o 1 option(- cidades -), se

// quisesse remover todos, colocaria obj.remove(0)

 

for(i=0;i<result.length;i++){

// criando o option

var opt = document.createElement("option");

opt.text = result.descricao;

opt.value = result.pacote;

 

// Atribuindo o option ao select cidades

try {

obj.add(opt,null);

}catch(ex){

obj.add(opt,obj.length);

}

}

}catch(e){};

}

}

//-->

</script>

</head>

 

<form name="form1" method="post" action="<?php print $_SERVER["PHP_SELF"]; ?>?acao=cadastrar&id_cliente=<? echo $array_cliente['id_cliente'];?>">

<p><font face="Geneva, Arial, Helvetica, sans-serif">Codigo do Cliente:

<input name="id_cliente" type="text" disabled="disabled" id="id_cliente" value="<? echo $array_cliente['id_cliente'];?>">

</font>

 

</p>

 

<p><font face="Geneva, Arial, Helvetica, sans-serif">Plano:

<select name="plano" onchange="busca_pacotes(this.options[this.options.selectedIndex].value)">

<option value=""><< Selecione o Plano >></option>

<? while($array = mysql_fetch_array($sql_planos)) {

print "<option value=\"{$array["id_plano"]}\">{$array["descricao"]}</option>\n";

}

mysql_free_result($sql_planos);

 

?>

</select></font></font>

</p>

<p><font face="Geneva, Arial, Helvetica, sans-serif">Pacote:

<select name="pacote">

<option><< Selecione o Pacote >></option>

</select>

</font></p>

 

Este trecho de código acima é o que contém as duas combos.

O código abaixo é da pagina chamada pela função

 

CARREGA_PACOTE

 

<?php

include "conecta.php"; //Conecta com o banco de dados MySQL

include "ver_sessao.php"; //Verifica se a sessão está ativa

 

if($_REQUEST["plano"]){

if asda

$sql_pcte = mysql_query("SELECT p.* FROM plano_pacote pp, pacotes p WHERE pp.id_plano = {$_REQUEST["plano"]} and pp.id_pacote = p.id_pacote")

or die("ERRO no comando SQL:".mysql_error());

$cont = 0;

while($pcte = mysql_fetch_array($sql_pcte)) {

## Aqui monta o resultado da busca no formado

## que o javascript entende para retornar ao ajax

$pacotes .= ($cont==0? "" : ",").

"{'id_pacote':'".$pcte["id_pacote"]."','descricao':'".$pcte["descricao"]."'}";

$cont++;

}

 

mysql_free_result($sql_pcte);

 

## E aqui printa o resultado no documento

print "[$pacotes]";

}

mysql_close();

 

?>

 

Por favor me ajudem urgente.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite Leonardo, vlw pela ajuda, mas o primeiro link me pareceu muito complicado, não entendi muita coisa e o segundo link eu ja tinha tentado, mas parece que esse exemplo ta com algum erro, não funcionou tb.

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.