Ir para conteúdo
Fórum Script Brasil
  • 0

Carregar Textfield A Partir De Uma Opção Selecionada No Combobox.


Walter Albuquerque

Pergunta

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

Link para o comentário
Compartilhar em outros sites

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

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...