Ir para conteúdo

POWERED BY:

Arquivado

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

Walter Albuquerque

Carregar TextField a partir de uma opção selecionada no Combobox.

Recommended Posts

Olá Pessoal,

 

Estou necessitando de um formulário que ele a partir de uma seleção de item de um Combobox (Que trás dados do banco) um campo texto seja carregado de acordo com a seleção escolhida nesse combo.

 

Consegui fazer um exemplo onde eu carrego uma segunda combo de acordo com a seleção da primeira, mas o que eu quero é que esse segundo campo seja um textField, que ele seja preenchido de acordo com a seleção no primeiro combo.

 

Segue meus codigos, que consegui fazendo com duas combo.

 

 

form.php

<?php// Montando nossa conexão $con = mysql_connect("localhost", "root", "root");mysql_select_db("estudo");?><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><script language="javascript">function list_dados( valor ){  http.open("GET", "result.php?id=" + valor, true);  http.onreadystatechange = handleHttpResponse;  http.send(null);}function handleHttpResponse(){  campo_select = document.forms[0].subcategoria;  if (http.readyState == 4) {	campo_select.options.length = 0;	results = http.responseText.split(",");	for( i = 0; i < results.length; i++ )	{ 	  string = results[i].split( "|" );	  campo_select.options[i] = new Option( string[0], string[1] );	}  }}function getHTTPObject() {var req;try { if (window.XMLHttpRequest) {  req = new XMLHttpRequest();  if (req.readyState == null) {   req.readyState = 1;   req.addEventListener("load", function () {   req.readyState = 4;   if (typeof req.onReadyStateChange == "function")	req.onReadyStateChange();   }, false);  }  return req; } if (window.ActiveXObject) {  var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];  for (var i = 0; i < prefixes.length; i++) {   try {	req = new ActiveXObject(prefixes[i] + ".XmlHttp");	return req;   } catch (ex) {};  } }} catch (ex) {}alert("XmlHttp Objects not supported by client browser");}var http = getHTTPObject();// Logo após fazer a verificação, é chamada a função e passada // o valor à variável global http.</script></head><body><form name="formulario" method="post" action="">Categoria:<select name="categoria" onChange="list_dados( this.value )"><option></option><?php$consulta = mysql_query("SELECT * FROM tbl_categorias ORDER BY nome ASC");while( $row = mysql_fetch_assoc($consulta) ){echo "<option value=\"{$row['codigo']}\">{$row['nome']}</option>\n";}?></select></p><p>Subcategoria:  <select name="subcategoria"></select></p></form></body></html>

result.php

<?php$con = mysql_connect("localhost", "root", "root");// Selecionando  base de dados, no caso se chama XMLHttpRequestmysql_select_db("estudo");// Guardando o id passado pelo form select// Trim remove os espaços no inicio e final// addslashes Retorna uma string com barras invertidas antes de caracteres // que precisam ser escapados para serem escapados em query a banco de dados$categoria = $_GET["id"]; // Fazendo nosso selec para todas subcategorias que pertencem à categoria presente // na variavel $categoria acima$consulta = mysql_query("SELECT * FROM tbl_subcategoria 						 WHERE categoria = '$categoria' ORDER BY nome ASC" ); while( $row = mysql_fetch_assoc($consulta) ){  // subcategoria será apresentada da forma "NOME|CODIGO,..."   // Maneira a ser tratada no JavaScript   // Vale lembrar que estamos contatenando o "nome" com a "|" com o "codigo" e com a ","  echo $row["nome"]." "; }?>

Estrutura do banco MySQL

CREATE TABLE  `estudo`.`tbl_categorias` (  `codigo` smallint(3) NOT NULL auto_increment,  `nome` varchar(40) NOT NULL,  PRIMARY KEY  (`codigo`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE  `estudo`.`tbl_subcategoria` (  `codigo` smallint(3) NOT NULL auto_increment,  `categoria` smallint(3) NOT NULL,  `nome` varchar(40) NOT NULL,  PRIMARY KEY  (`codigo`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Conto com a ajuda de todos.

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.