Olá pessoal!!
Queria uma ajuda, estou fazendo um formulario e quero que a partir da seleção de um select que representa um estado ex: SP, seja carregado no outro select as cidades cadastradas no banco que tenham o estado de SP como uf.
Quem puder me ajudar agradeço muito.
Obrigado
O que tu tem de código pronto?!
Oi Thiago to mandando o que tenho por enquanto…obrigadinha!!
fornecedor.html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>..::Cadastro de Fornecedores::..</title>
</head>
<body>
<table width="610" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><form id="form" name="form" method="post" action="AdicionaFornecedorServlet.java">
<table width="610" border="0" cellspacing="0" cellpadding="0" id="todoform">
<tr>
<td width="108"><div align="right"><label>Endereço:</label></div></td>
<td width="502"><input name="endereco" type="text" size="30" maxlength="50" /></td>
</tr>
<tr>
<td><div align="right"><label>Complemento:</label></div></td>
<td><input name="complemento" type="text" size="30" maxlength="50" /></td>
</tr>
<tr>
<td><div align="right"><label>Bairro:</label></div></td>
<td><input name="bairro" type="text" size="20" maxlength="20" alt="cnpj"/></td>
</tr>
<tr>
<td><div align="right"><label>Cidade</label></div></td>
<td><<select name="cidade"></select></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
BeanFornecedor.java
package modelo;
import java.sql.Timestamp;
public class BeanFornecedor {
String endereco;
String complemento;
String bairro;
int cidade;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public int getCidade() {
return cidade;
}
public void setCidade(int cidade) {
this.cidade = cidade;
}
}
FornecedorDAO.java
package banco;
import java.sql.*;
import java.sql.SQLException;
import modelo.BeanFornecedor;
public class FornecedorDAO {
private Connection connection;
public FornecedorDAO() throws SQLException {
connection = ConnectionFactory.getConnection();
}
public void adiciona(BeanFornecedor fornecedor) throws SQLException {
// prepared statement para inserção
String sql = "insert into glo_fornecedores (endereco,complemento,bairro,cidade) values (?,?,?,?)";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1,fornecedor.getEndereco());
stmt.setString(2,fornecedor.getComplemento());
stmt.setString(3,fornecedor.getBairro());
stmt.setInt(4,fornecedor.getCidade());
// executa
stmt.execute();
stmt.close();
}
}
AdicionaFornecedorServlet.java
package modelo;
import banco.FornecedorDAO;
public class AdicionaFornecedorServlet extends HttpServlet{
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
BeanFornecedor fornecedor = new BeanFornecedor();
String endereco = request.getParameter("endereco");
String complemento = request.getParameter("complemento");
String bairro= request.getParameter("bairro");
Int cidade = Integer.parseInt("request.getParameter("tf_endereco")");
try{
FornecedorDAO dao = new FornecedorDAO();
dao.adiciona(fornecedor);
} catch (SQLException e) {
throw new ServletException(e);
}
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("Fornecedor Adicionado");
writer.println("</html>");
}
}
Bom, a maneira mais fácil, seria no seu combo de estados, ao ser selecionado um, você fazer um request a uma servlet passando como parâmetro o estado selecionado, por exepmlo
<form action="CadastroFornecedorServlet" method="post">
<select name="estado" onchange="document.forms[0].submit()">
<option value="SP">São Paulo</option>
<option value="RJ">São Paulo</option>
</select>
</form>
A partir daí, você pega qual foi o estado selecionado e faz a consulta no banco!
Vou tentar fazer um exemplo aqui mas vai tentando por conta
Thiago entendi seu raciocínio, vou pesquisar o método onchange para ver se posso invocar a servlet de busca de cidades por estado dentro do select.
Obrigadinha!!
Olá MaryJane
Você conhece Ajax? Seria a forma mais elegante de se fazer isso. Imagine se toda vez que clicar em um Estado, você der um submit na página, e toda ela ser carregada denovo? E os campos já preenchidos?
Procure saber um pouco de Ajax, e como complemento, te indico o framework JQuery, que tem uns plugins muito bons para você utilizar.
Vou te passar um resumo de como seria com JQuery, só pra tu ter ideia do tanto que é fácil
[code]
<select id="estado" onchange="getCidade()">
<option value="SP">São Paulo</option>
<option value="RJ">São Paulo</option>
</select>
[/code]
Dai com javascript vc faria assim:
function getCidade(){
$("#cidade").load("cidades.jsp/"+$("#estado").val());
}
Observe que estou usando o framework JQuery para fazer isso.
A função do JQuery load, chama uma página cidades.jsp, onde nela você vai criar um select com todas as cidades referentes aquele estado que vc passou como parametro.
a pagina cidade seria algo do tipo
<select id="cidade" >
<option value="c1">Cidade 1</option>
<option value="c2">Cidade 2</option>
<option value="c3">Cidade 3</option>
</select>
o objeto cidade pode ser um div, onde será criado um select, com todas as cidades.
Mais informações em:
http://jquery.com/
aqui tem uns exemplos básicos que achei por acaso buscando no google
http://www.studioaweb.com.br/blog/2009/04/tutorial-jquery-javascript-iniciante/
Qualquer dúvida posta ai que eu te ajudo.
Abraço