Duvida sobre recebimento de dados

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

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

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

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

Que principal ?, fala do servlet ?

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

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>

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

select * from atividades where cliente_id = ?

Isso ai seria na classe DAO certo ?

Pelo padrão que está seguindo sim.

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 ?

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

 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…

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

E fechar o ResultSet e PreparedStatement.

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

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

client_id do select das atividades.

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

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