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
<?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 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.