Passar todos os campos do id selecionado - Por favor me ajudem!

16 respostas
M

Pessoal, preciso de uma ajuda!!!

Estou montando uma tela para atualização dos dados cadastrais dos usuários, esta tela faz um select e traz os valores dentro dos campos para serem atualizados, sem precisar entrar e outra tela para fazer a atualização. Para cada linha (usuário) existe um checkbox com o id de cada um.

Minha dúvida é o seguinte:

Quero atualizar nome e endereço dos usuários com o checkbox selecionado.

Pergunta: Como pegar os valores dos campos nome e endereço de cada usuário selecionado para atualizar no banco.

Ex:

Id nome endereço
1 João xxx
2 Maria yyy

Seleciono os dois checkbox e mando atualizar, quero que o sistema identifique os campos de cada id e atualize no banco.

Alguém pode me ajudar, como fazer isso?

Obrigado

Marcos

16 Respostas

yorgan

Você irá executar um comando SQL de UPTADE para cada checkbox marcado.

[]´s

Daniel

Marco_A_Caetano

Você terá que diferenciar seus campos nome e endereço, pois aparentemente estão todos com name iguais
concatene o id dos registros nas propriedades “name” de cada campo (e na propriedade id também)…
varra os ids selecionados, e pegue os parametros que possuem o name “camponome_id_do_registro” para todos seus ids pegos nos checkbox’s

OU
você pode deixar apenas um name para todos os campos e comparar a lista ORDENADAMENTE dos values dos checkbox’s com a lista de values do nome e endereço

M

Certo!!!

Mas não sei como enviar os valores dos campos de cada id.

Por exemplo preciso atualizar o “name” de um id e o “name” do outro id, só que o nome do campo é igual para todos os ids.

Vou postar o meu código que traz os valores na tela. O meu problema é com o sql de atualização.

<%
if(session.getValue("login_portal") != null){
%>
<%@ page contentType="text/html; charset=iso-8859-1" session="true" import="util.*"  language="java" import="java.sql.*" import="java.util.*" import="java.util.Date" import="java.text.SimpleDateFormat" errorPage="" %>
<%
	String nomeSession = (String) session.getValue("nomeSession");
	//out.println(session.getValue("nomeSession"));
	new Conexao();
%>
<!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" lang="en">
<head>
  <!--<META HTTP-EQUIV="Refresh" CONTENT="60;">  -->
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <meta name="description" content="Your description goes here" />
  <meta name="keywords" content="your,keywords,goes,here" />
  <meta name="author" content="Design: Marcos Scopel" />
  <meta http-equiv="Page-Enter" content="blendTrans(Duration=0)" />
  <meta http-equiv="Page-Exit" content="blendTrans(Duration=0)" />
  <link rel="stylesheet" type="text/css" media="screen,projection" href="../css/style_screen.css" />
   <title>Portal das Tecnologias</title>
</head>
<body>
<div class="page-container-1">
<!-- Buffer before header -->
<div class="bufferPOS">
		
<!-- USUÁRIOS CADASTRADOS -->

    <%
    	int limit = 30; // quantidade de resultados por página

    	//obtém a quantidade de registros
    	
    	ResultSet rs_c = Conexao.stm.executeQuery("SELECT COUNT(*) AS c FROM usuarios order by nome_usuario");
    	rs_c.next();
    	
        int total_rows = Integer.parseInt(rs_c.getString("c"));

    	String pagina = request.getParameter("pagina"); // página atual
    	if(pagina == null){
    	  pagina = "1";
    	}
  	
    	//ponho o número de registros total, o tamanho de página e a página que se mostra
        out.println("Found "+total_rows+ " CQA(s)."+"<br>");

        if (total_rows == 0){
    	out.println("Nenhum registro encontrado <br><br>");
        }
    	
    	int limitValue = (Integer.parseInt(pagina) * limit) - limit;  
    	
    	int anterior;
    	if(Integer.parseInt(pagina) != 1){  
    	  anterior = Integer.parseInt(pagina) - 1; 
    	  out.println("<a href=?pagina=" + anterior + ">Previous</a>");
    	}
    	else 
    	  out.println(" Previous ");
    	int numOfPages = total_rows / limit;
    	
    	int i;

    	for(i = 1; i <= numOfPages; i++){ 
    	  if(i == Integer.parseInt(pagina)){ 
    	    out.println("<b>" + i + "</b> "); 
    	  }
    	  else{ 
    	    out.println("<a href=?pagina=" + i + ">" + i + "</a> ");  
    	  } 
    	}

    	if((total_rows % limit) != 0){ 
    	  if(i == Integer.parseInt(pagina)){ 
    	    out.println(i + " "); 
    	  }
    	  else{ 
    	    out.println("<a href=?pagina=" + i + ">" + i + "</a> "); 
    	  } 
    	} 

    	int proxima;
    	if((total_rows - (limit * Integer.parseInt(pagina))) > 0){ 
    	  proxima = Integer.parseInt(pagina) + 1; 
    	        
    	  out.println("<a href=?pagina=" + proxima + ">Next</a>");  
    	}
    	else 
    	  out.println("Next ");
    %>
 <form name="usuarios" method="post" action="../CqaAtualizaUsuarios">   
 <table width="95%" class="tableposres"  align="center" cellpadding="1" cellspacing="1">

     <tr>
    
      <th colspan="12" style="text-align: center;" valign="middle">Users Added</th>
     
    </tr>
    
    <tr>
    
      <th style="text-align: center;" valign="middle">Id</th>
          
      <th style="text-align: center;" valign="middle">Username</th>
    
      <th style="text-align: center;" valign="middle">Address</th>
   
    </tr>
  
<%
	ResultSet rs2 = Conexao.stm1.executeQuery("SELECT * FROM usuarios order by nome_usuario  LIMIT " + limitValue + ", " + limit);

     while(rs2.next()){
     String id = rs2.getString("id_usuario");
	 String name = rs2.getString("nome_usuario");
	 String address = rs2.getString("tech_center");
%>              
   <tr>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="checkbox" name="id" value="<%=id%>" /></td>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="text" name="name" value="<%=name%>" /></td>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="text" name="address" value="<%=address%>" /></td>
   </tr> 
<%
}
     Conexao.con.close();
%>
</table>
</div>
    <div class="footer">
      <p>Copyright &copy; 2009 xxxxx SA&nbsp;&nbsp;|&nbsp;&nbsp;All Rights Reserved</p>
    </div>
</body>
</html>
<%
}
else
{
%>
<%@ include file="../logar.jsp" %>
<%
}
%>

Marcos

Marco_A_Caetano

não sei se você leu meu comentário… rs

M

Marco,

Realmente eu não tinha lido seu comentário…rs

obrigado pela dica.

M

Marco,

Fiz desta maneira para concatenar o id nos campos, está correto?

<tr>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="checkbox" name="id"+<%=id%> id="id"+<%=id%> value="<%=id%>" /></td>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="text" name="name"+<%=id%> id="name"+<%=id%> value="<%=name%>" /></td>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="text" name="address"+<%=id%> id="address"+<%=id%> value="<%=address%>" /></td>
   </tr>

Mas assim, e agora… como percorro os id’s para atualizar…podes me ajudar a montar esse sql?

Marcos

Marco_A_Caetano

Cara existem outras maneiras de fazer isso por frameworks, jstl e outros…
mas se você realmente quer fazer assim… vamos lá

vc tem que concatenar em java certo? vc ta jogando seu “+” dentro do html… rs fora da scriptlet

faça assim:
name="<%=“nome_”+id%>"

M

Marco, sou iniciante em java… tenho muito que aprender ainda… conto com ajuda de vcs aí do forum… :smiley:

Modifiquei a concatenação…

<tr>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="checkbox" name="<%="id"+id%>"  id="<%="id"+id%>"  value="<%=id%>" /></td>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="text" name="<%="name"+id%>" id="<%="name"+id%>"  value="<%=name%>" /></td>
    <td class="rowpos" style="text-align: center;" align="center"><INPUT type="text" name="<%="address"+id%>" id="<%="address"+id%>"  value="<%=address%>" /></td>
   </tr>

Agora como faço para varrer os ids e fazer o update na tabela usuários?

Marco_A_Caetano

cara é assim
name=’<%=“nome_”+id%>’ com aspas simples no começo… se não vai fexar seu atributo antes de acabar…

do modo que está fazendo, os checkbox não tem que ter names diferentes SOMENTE os campos text…

já a parte de varrer ids… da um System out no request.getParameter(“name_dos_checkbox”) e ver o que sai…
ai você vai saber como varrer, porque já é a parte de java basico :slight_smile:

M

Blz Marco!!

Sobre varrer os ids, sem problemas… o problema é como recebo os valores dos campos “text” de cada id no request.getParameter?

Recebe os campos normalmente?

String id = (String) request.getParameter(id);

String name = (String) request.getParameter(name);

String address = (String) request.getParameter(address);

isso?

Marco_A_Caetano

existe um método que retorna o mapa com todos os parametros de uma request
request.getParameterMap()

varra esse mapa, filtrando nos indices o nome padrão do text concatenando com os ids selecionados nos checkbox

M

Marco, obrigado pela sua ajuda, mas não tenho esse conhecimento para fazer…

Valeu

Marco_A_Caetano

request.getParameterMap().get(“name_dos_campos_text_com_id”);

faz um for nisso ai usando os ids dos check’s… 8)

M

Marco,

Por favor faz um exemplo completo usando os meus campos de como seria por inteiro… Recebendo os valore e varrendo o map com os id’s…

Prometo que vou estudar para saber como vc fez e o que cada parte do código faz…

Estou ficando preocupado aqui em relação a isso… Pra vc é tão simples,mas para mim tá complicado…

Agradeço muito se vc me ajudar com isso…

Marcos

Marco_A_Caetano
for (String x : request.getParameterValues("seus_checkbox"))  //Aqui vai vir os ids numa lista
     request.getParameterMap().get("endereco"+x); 
     request.getParameterMap().get("nome"+x); 
     //CODIGOS ADICIONAIS
/*Aqui pega um input com nome padrao "endereco" e nome de um campo text com seu respectivo id*/

Pronto, ai você faz o que quizer com seus endereços e nomes novos de apenas os campos com o checkbox marcado

M

Marco, fiz assim:

for (String id : request.getParameterValues(id)){  //Aqui vai vir os ids numa lista

request.getParameterMap().get(name+id);

request.getParameterMap().get(address+id);
out.println(id+"
");

out.println(request.getParameterMap().get(“name”+id)+"
");

}

Olha o resultado:

5
[Ljava.lang.String;@19ce47a
8
[Ljava.lang.String;@15c2843
7
[Ljava.lang.String;@15780d9

Criado 29 de setembro de 2009
Ultima resposta 30 de set. de 2009
Respostas 16
Participantes 3