GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Duvida sobre recebimento de dados


#1

Olá, eu estou fazendo um projeto de conclusão do meu curso técnico, resolvi fazer um sistema de academia, até ai tudo certo, tem uma coisa em que eu quis fazer que é o cronograma de atividades do aluno, aonde o Professor cadastra essa atividade referente há, dia, hora e o nome da atividade, mas, quando eu entro no perfil do cliente, e vou em cronograma, ele me da a lista de cronograma feita, ou seja, qualquer cliente que eu logue, vai aparecer as mesmas atividades, sendo que apenas 1 cliente foi cadastrado nela…Gostaria de saber qual a solução para este problema…Estou usando a JSP para receber esses arquivos…

Se quiser o código :

<%@include file=“menu_cliente.jsp” %>
<%@page import=“model.Atividades”%>
<%@page import=“java.util.ArrayList”%>
<%@page import=“model.Cliente”%>
<%
String id = request.getParameter(“id”);
Cliente c = new Cliente();
ArrayList lista = new ArrayList();
Atividades a = new Atividades();
ArrayList listas = new ArrayList();
try {
listas = a.listar();
c.setId(cLogado.getId());
c.carregar();

} catch (Exception e) {
    out.print("Erro: " + e);
}

%>
<%@page contentType=“text/html” pageEncoding=“UTF-8”%>

Conexão Saúde
<!-- Navigation -->

 <nav class="navbar navbar-expand-lg navbar-light bg-faded py-lg-4">
     <div class="container">
    <div class="collapse navbar-collapse" id="navbarResponsive">
      <ul class="navbar-nav mx-auto">
        <li class="nav-item px-lg-4">
          <a class="nav-link text-uppercase text-expanded" href="painel_cliente.jsp"><img src="imagens/perfil.png"/> Perfil</a>
        </li>
        <li class="nav-item px-lg-4">
          <a class="nav-link text-uppercase text-expanded" href="diagrama.jsp"><img src="imagens/calendarr.png"/> Conograma</a>
        </li>
        <li class="nav-item">
    <a class="nav-link" href="index.jsp"><img src="imagens/exit.png"/>Sair</a>
  </li>  
      </ul>
    </div>
         </div>
</nav> 
    
<br>
<form method="post" action="atividades.jsp">
<div class="container">
<table class="table table-striped custab">
    
<h1>Cronograma</h1>
<thead>
    <tr>
        <th>Horario</th>
        <th>Segunda</th>
        <th>Terça</th>
        <th>Quarta</th>
        <th>Quinta</th>
        <th>Sexta</th>
        	
    </tr>
</thead>
<tr>
<%
    int cont = 0;
    for(Atividades an:listas){ 
        
        if (cont == 0){
%>
    <td>
        <%=an.getHorario()%>
        
        </td> 
    <%
    }
    %>
    <td><%=an.getNome()%></td>
    <%
  }

%>








Page © - 2017 Powered by Isaias

<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

<!-- Zoom when clicked function for Google Map -->

#2

A solução seria uma tabela que relaciona aquelas atividades com aquele aluno/cliente.


#3

SIm mas existe essa tabela…O nome da tabela se chama Atividades, ele pega a chave estrangeira do Cliente e do Funcionario(professor)


#4

Faltou postar o principal, a parte que tem a query que retorna esses dados.


#5

Que principal ?, fala do servlet ?


#6

A query, a consulta que faz no banco. Se está usando banco relacional, posta o SQL.


#7

Bom, vou postar os codigos da tabela Atividade…

A Model…

< package model;

import java.util.ArrayList;

/**
*

  • @author isaias
    */
    public class Atividades {
    private int id;
    private String horario;
    private String nome;
    private String dia;
    private Funcionario funcionario;
    private Cliente cliente;

    public int getId() {
    return id;
    }

    public void setId(int id) {
    this.id = id;
    }

    public String getHorario() {
    return horario;
    }

    public void setHorario(String horario) {
    this.horario = horario;
    }

    public String getNome() {
    return nome;
    }

    public void setNome(String nome) {
    this.nome = nome;
    }

    public String getDia() {
    return dia;
    }

    public void setDia(String dia) {
    this.dia = dia;
    }

    public Funcionario getFuncionario() {
    return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
    this.funcionario = funcionario;
    }

    public Cliente getCliente() {
    return cliente;
    }

    public void setCliente(Cliente cliente) {
    this.cliente = cliente;
    }

public void inserir() throws Exception{
AtividadesDAO aDAO = new AtividadesDAO();
aDAO.inserir(this);
}
public void alterar() throws Exception{
AtividadesDAO aDAO = new AtividadesDAO();
aDAO.alterar(this);
}
public void excluir() throws Exception{
AtividadesDAO aDAO = new AtividadesDAO();
aDAO.excluir(this);
}
public ArrayList listar() throws Exception{
AtividadesDAO aDAO = new AtividadesDAO();
return aDAO.listar();
}
public void carregar() throws Exception{
AtividadesDAO aDAO = new AtividadesDAO();
this.horario = aDAO.carregarPorId(this.id).getHorario();
this.nome = aDAO.carregarPorId(this.id).getNome();
this.dia = aDAO.carregarPorId(this.id).getDia();
this.funcionario = aDAO.carregarPorId(this.id).getFuncionario();
this.cliente = aDAO.carregarPorId(this.id).getCliente();
}

}

o DAO dela

package model;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import model.Atividades;

/**
*

  • @author isaias
    */
    public class AtividadesDAO extends DataBaseDAO{
    public void inserir(Atividades a) throws Exception{
    String sql=“INSERT INTO atividades (horario, nome, dia, funcionario_id, cliente_id) VALUES(?,?,?,?,?)”;
    this.conectar();
    PreparedStatement pstm = conn.prepareStatement(sql);
    pstm.setString(1, a.getHorario());
    pstm.setString(2, a.getNome());
    pstm.setString(3, a.getDia());
    pstm.setInt(4, a.getFuncionario().getId());
    pstm.setInt(5, a.getCliente().getId());
    pstm.execute();
    this.desconectar();
    }
    public void alterar(Atividades a) throws Exception{
    String sql=“UPDATE atividades SET horario=?, nome=?, dia=?, funcionario_id=?, cliente_id=? WHERE id=?”;
    this.conectar();
    PreparedStatement pstm = conn.prepareStatement(sql);
    pstm.setString(1, a.getHorario());
    pstm.setString(2, a.getNome());
    pstm.setString(3, a.getDia());
    pstm.setInt(4, a.getFuncionario().getId());
    pstm.setInt(5, a.getCliente().getId());
    pstm.setInt(6, a.getId());
    pstm.execute();
    this.desconectar();
    }
    public void excluir(Atividades a) throws Exception{
    String sql=“DELETE FROM atividades WHERE id=?”;
    this.conectar();
    PreparedStatement pstm = conn.prepareStatement(sql);
    pstm.setInt(1, a.getId());
    pstm.execute();
    this.desconectar();
    }
    public ArrayList listar() throws Exception{
    ArrayList lista = new ArrayList();
    String sql=“SELECT * FROM atividades”;
    this.conectar();
    PreparedStatement pstm = conn.prepareStatement(sql);
    ResultSet rs = pstm.executeQuery();
    while (rs.next()) {
    Atividades a = new Atividades();
    a.setId(rs.getInt(“id”));
    a.setHorario(rs.getString(“horario”));
    a.setNome(rs.getString(“nome”));
    a.setDia(rs.getString(“dia”));
    FuncionarioDAO uDAO = new FuncionarioDAO();
    a.setFuncionario(uDAO.carregarPorId(rs.getInt(“funcionario_id”)));
    ClienteDAO cDAO = new ClienteDAO();
    a.setCliente(cDAO.carregarPorId(rs.getInt(“cliente_id”)));
    lista.add(a);
    }
    this.desconectar();
    return lista;
    }
    public Atividades carregarPorId(int id) throws Exception{
    Atividades a = new Atividades();
    String sql=“SELECT * FROM atividades WHERE id=?”;
    this.conectar();
    PreparedStatement pstm = conn.prepareStatement(sql);
    pstm.setInt(1, id);
    ResultSet rs = pstm.executeQuery();
    if (rs.next()) {
    a.setId(rs.getInt(“id”));
    a.setHorario(rs.getString(“horario”));
    a.setNome(rs.getString(“nome”));
    a.setDia(rs.getString(“dia”));
    FuncionarioDAO uDAO = new FuncionarioDAO();
    a.setFuncionario(uDAO.carregarPorId(rs.getInt(“funcionario_id”)));
    ClienteDAO cDAO = new ClienteDAO();
    a.setCliente(cDAO.carregarPorId(rs.getInt(“cliente_id”)));
    }
    this.desconectar();
    return a;
    }
    }Texto pré-formatado>

#8

Você está retornando todas as atividades. Exemplo do que precisa fazer:

select * from atividades where cliente_id = ?


#9

Isso ai seria na classe DAO certo ?


#10

Pelo padrão que está seguindo sim.


#11

Então nesse caso, eu teria que ter 2 listar, pois tem que ter um, pro funcionario, quando ele cadastrar o cliente, e ele ver la a listagem… e outro pro cliente, que seria nesse codigo sql q voce me mandou ai, procede ?


#12

Tem que ter um listar pra cada consulta diferente. Só não faça n selects picotados pra no final exibir 1 consulta pro usuário, quando for assim faça os joins necessários pra ficar numa query só.


#13
 public ArrayList<Atividades> listarr() throws Exception{
    ArrayList<Atividades> lista = new ArrayList<Atividades>();
    String sql="SELECT * FROM atividades WHERE cliente_id = ?";
    this.conectar();
    PreparedStatement pstm = conn.prepareStatement(sql);
    ResultSet rs =  pstm.executeQuery();
    while (rs.next()) {
       Atividades a = new Atividades();
        a.setId(rs.getInt("id"));
        a.setHorario(rs.getString("horario"));
        a.setNome(rs.getString("nome"));
        a.setDia(rs.getString("dia"));     
        ClienteDAO cDAO = new ClienteDAO();
        a.setCliente(cDAO.carregarPorId(rs.getInt("cliente_id")));
        lista.add(a);
    }
    this.desconectar();
    return lista;
}`

Mais ou menos assim ?, malz pelas perguntas poderem parecer obvias…as vezes está na minha cara as respostas e mesmo assim não vejo…


#14

Um problema que vejo é ter faltado setar o parametro cliente_id.


#15

E fechar o ResultSet e PreparedStatement.


#16

Eu não já setei ele no final ali ?..

ClienteDAo cDAO = new ClienteDAO();
a.setCliente(cDAO.carregarPorId(rs.getInt(“cliente_id”)));


#17

client_id do select das atividades.


#18

String sql=“SELECT * FROM atividades (cliente_id) WHERE cliente_id = ?”; Assim ?


#19

String sql=“SELECT cliente_id FROM atividades where cliente_id=?”; desse jeito entao ?


#20