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;
Pergunta
Walter Albuquerque
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
result.php Estrutura do banco MySQLConto 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.