Jump to content
Fórum Script Brasil
  • 0

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


Walter Albuquerque
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...