paginação

8 respostas
S
Boa galera, aqui estou efetuando uma paginação com esse codigo:
<%@ page language="java" import="java.sql.*" %>
<html>
<head><title></title>
</head>
<body>

<%

String setor = (String) request.getParameter("grupo");
	//String setor3 = (String) request.getParameter("grupo");
  
 
  String url = "jdbc:mysql://localhost/shelter";
  String usuario = "root";
  String senha = "1272";
  
  Connection conn = null;
  
  try{
  
  	
					
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    conn = DriverManager.getConnection(url, usuario, senha);
  }
  catch(SQLException ex){
    out.println("SQLException: " + ex.getMessage() + "<br>");
    out.println("SQLState: " + ex.getSQLState() + "<br>");
    out.println("VendorError: " + ex.getErrorCode() + "<br>");
  }
  catch(Exception e){
    out.println("Problemas ao tentar conectar com o banco de dados");
  }
  
  // conn é a conexão com o banco de dados
  int limit = 15; // quantidade de resultados por página                
  
  // obtém a quantidade de registros
  PreparedStatement pstmt = conn.prepareStatement
  ("select count(*) as c From ramal R where R.grupo = '"+ setor +"' ");                  
  
  //("select count(*) as c From tb_ligacoes L, ramal R where R.ramal = L.ramal And R.grupo = ativos ");     
  // ("SELECT COUNT(*) AS c FROM TB_LIGACOES where ramal = 1037");
  ResultSet rs = pstmt.executeQuery();
  rs.next();
  int total_rows = Integer.parseInt(rs.getString("c"));
  

  String pagina = request.getParameter("pagina"); // página atual
  if(pagina == null){
    pagina = "1";
  }
  
  int limitValue = (Integer.parseInt(pagina) * limit) - limit;  
  
  PreparedStatement pstmt2 = conn.prepareStatement
  ("select  R.ramal, count(recebida) as recebidas, count(n_discado) as efetuadas From tb_ligacoes L, ramal R " + 
   "where R.ramal = L.ramal And R.grupo = '"+ setor +"' Group by R.ramal LIMIT " + limitValue + ", " + limit );                  
  
  
 // ("SELECT * FROM TB_LIGACOES where ramal = 1037 LIMIT " + limitValue + ", " + limit);
  ResultSet rs2 = pstmt2.executeQuery();
  
  %>
  <table border="0">
  <tr><th>Ramal</th><th>Ligações efetuadas</th><th>Ligações recebidas</th></tr>
   
  <% 
  while(rs2.next()) {
    
      out.print("<tr>\n<td>" + rs2.getString("RAMAL") + "</td>");
      out.print("<td>" + rs2.getString("efetuadas") + "</td>");
      out.print("<td>" + rs2.getString("recebidas") + "</td>");
      out.print("</tr></td>\n</tr>");
      
	
    //int id = rs2.getInt("RAMAL");
    //out.println("ID: " + id + "<br>");
    //String nome = rs2.getString("N_DISCADO");
    //out.println("NOME: " + nome + "<br>");
    //int idade = rs2.getInt("OPERADORA");
    //out.println("IDADE: " + idade + "<br><br>");
      

	
  }
  
  %>
  </tr>
        </table>
  
  <%
  int anterior;
  if(Integer.parseInt(pagina) != 1){  
    anterior = Integer.parseInt(pagina) - 1; 
    out.println("<a href=?pagina=" + anterior + ">" + limit + " Anteriores</a>");
  }
  else 
    out.println(limit + " Anteriores ");
    
  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 + ">Próximos " + limit + "</a>");  
  }
  else 
    out.println("Próximos " + limit);   
%>

</body>
</html>

qual o drama:
Quando click para exibir a proxima quantidade de registro, a tabela me mostra vazio.
Obs.: A tabela so me lista os 15 primeiros arquivos.

Alguem poderia me ajudar?

Abraços,

8 Respostas

peczenyj

Acho que vc deveria refatorar esse jsp e colocar o codigo que acessa o banco de dados numa classe, colocar uns testes unitarios la, estudar um pouco sobre PreparedStatement (seu codigo é vulneravel a sql injection, pra começo de conversa), e ir matando um leão de cada vez.

Se eu visse esse codigo na minha frente e tivesse q dar manutenção “pra ontem” eu ficaria muito zangado.

S

concordo com vc , + a minha nessecidade agora seria esse , e te agradeço pela boa vantade em me ajudar … + aqui se puder responder para ajuadar, agradeço , se for para critica …guarda para vc …

abraços

fiaux

shelter:
concordo com vc , + a minha nessecidade agora seria esse , e te agradeço pela boa vantade em me ajudar … + aqui se puder responder para ajuadar, agradeço , se for para critica …guarda para vc …

abraços

Brabo hein… sem comentários…

S

o mesmo para vc

peczenyj

Se vc tem pressa, faça programação PPADD (passei por aqui driven development)

A cada request mostre UM MONTE DE ALERTS com todas as variaveis que vc recebeu.

Ai quando a coisa não funciona como vc quer vc pega esse select e faz na mão no banco de dados e vê se recebeu alguma coisa. Garanto que se vc mostrar o SQL que vc esta executando a cada paginada vc ja vai detectar o erro…

Dica:

String setor = (String) request.getParameter("grupo");

Qual sera o valor de “setor” quando vc tenta paginar?

Agora se vc não aguenta criticas mude de emprego: só com criticas que conseguimos melhorar :wink:

S

Haveria alguma solução?

Grato pela ajuda…

Abraços

J

Já ouviu falar em JSTL?

Ajuda bastante ter padrões nos dias de hoje.

S

Ouvi sim jaycwb,

  • qual foi a ajuda neste topico?

Criar acesso? Criar ponto?

Pow não da pra ajudar … fica calado aí tendeu…

Desculpa pela minha sinceridade, mais aqui sou bem objetivo, do tipo se poder ajudar sim , tendeu

Criado 21 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 8
Participantes 4