Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rcdesign

Orientações para um sistema de cursos.

Recommended Posts

Amigos,

 

sei que o título do tópico não é o mais adequado mas é difícil explicar em poucas palavras... o negócio é o seguinte:

 

Tenho um sistema de cursos funcionando no site www.teesbrazil.com.br da sequinte forma:

 

1. Cadastro a divisão/área onde os cursos serão inseridos (ex: divisao1; divisao2 ...)

2. Cadastro o curso, escolhendo a divisão a que ele pertence com os seguintes dados:

- divisão (list-menu que tras as divisões cadastrados no passo 1)

- nome do curso;

- data (data de início do curso);

- imagem (cada curso tem uma imagem diferente relacionada);

- resumo (resumo do descritivo do curso que aparece na página inicial do site, junto com a imagem e a data);

- detalhes (descritivo completo do curso).

 

 

Na área administrativa do site eu posso ainda, obviamente, administrar os cursos cadastrados. Crio uma listagem simples, por ordem de data de todos os cursos com a opção de editar ou excluir cada um deles, onde é mostrado o nome do curso e a data de início;

 

No momento do cadastramento do curso o sistema mostra as informações no front-end/site em 4 páginas distintas:

1. Página inicial - onde mostro os 6 próximos cursos a serem realizados;

2. Calendário - onde mostro mês a mês os cursos que serão realizados durante todo o ano (por enquanto estou mostrando os próximos seis meses);

3. Cursos - onde mostro todos os cursos de cada uma das divisões, por ordem de data;

4. Cursos - onde mostra o descritivo completo de cada um dos cursos.

 

Observações:

- "tudo" (ou quase tudo) no front-end é apresentado através de consultas mysql com excessão:

  • Menu drop-down das divisões
  • Calendário (datas) da página Calendário (A página calendário tem duas colunas - uma com as datas marcadas no calendário do mês e a outra com a lista dos cursos ao lado do calendário de cada mês.
- Alguns cursos são realizados apenas 1 vez no ano; outros, no entanto, serão realizados 2, 4 ou até 6 vezes, em datas diferentes é claro, durante o ano de 2009.

- Da forma em que está atualmente, preciso cadastrar todas as informações relativas aos cursos, a cada data programada para sua realização.

Exemplo:

- data: 01/01/09 - curso 1 (divisão imagem, resumo, detalhes...)

- data: 15/01/09 - curso 2 (divisão, imagem, resumo, detalhes...)

- data: 10/02/09 - curso 3 (divisão, imagem, resumo, detalhes...)

- data: 06/03/09 - curso 1 (divisão, imagem, resumo, detalhes...) ..... etc..etc...

- Conforme exemplo acima, para cada data de início do curso preciso cadastrar todas as informações pertinentes. Como tenho um mesmo curso sendo realizado mais de uma vez por ano, até 6, eu acabo tendo que cadastra-lo até 6 vezes. Se houver alguma alteração no descritivo do curso eu tenho que alterar, obviamente, em todas os 6 cadastros..

 

As questões, por ordem de prioridade:

1. Como melhorar o sistema para que, para cada curso, eu faça apenas um cadastro informando todas as datas de início.

Obs.: A princípio eu não gostaria de criar campos adicionais para data (data1, data2, data3, etc...), porém não consegui pensar em outra solução. Este, então, é um dos objetivos do tópico? Alguém tem idéia de como fazer?

Se houver apenas esta opção, como fazer a consulta ao banco de dados para que nas respectivas páginas do site não se altere as formas de apresentação atual dos cursos em suas respectivas páginas.

 

2. Como fazer a 'construção' do calendário/data da página calendário de forma automática, com as datas dos cursos já marcadas.

 

Obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

rcdesign para a parte das datas ao inves de criar campos adicionais para data (data1, data2, data3, etc...), crie uma outra tabela que relaciona o id do curso e as datas!

 

Ex:

 

TABELA DE CURSOS

 

------------------------

id_curso | nome |

 

1 | Nome do curso |

1 | Nome do curso2 |

1 | Nome do curso3 |

1 | Nome do curso4 |

------------------------

DATAS DOS CURSOS

 

------------------------

id_curso | data |

 

1 | 19/08/2008 |

 

1 | 20/12/2008 |

 

1 | 10/02/2009 |

 

1 | 19/04/2009 |

 

------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Como melhorar o sistema para que, para cada curso, eu faça apenas um cadastro informando todas as datas de início.

Obs.: A princípio eu não gostaria de criar campos adicionais para data (data1, data2, data3, etc...), porém não consegui pensar em outra solução. Este, então, é um dos objetivos do tópico? Alguém tem idéia de como fazer?

Se houver apenas esta opção, como fazer a consulta ao banco de dados para que nas respectivas páginas do site não se altere as formas de apresentação atual dos cursos em suas respectivas páginas.

 

2. Como fazer a 'construção' do calendário/data da página calendário de forma automática, com as datas dos cursos já marcadas.

 

Obrigado..

Acho que você não deve ter informações de datas em registros referentes ao "Curso"...

Você tem que separar "Curso" de "Realização de Curso". Por exemplo você cadastra no seu sistema um curso chamado "Circuitos Digitais"... Este curso poderá ser realizado centenas de vezes, com datas diferentes, professor diferente, e obviamente com alunos diferentes... POr isso seria interessante ter no cadastro do "Curso" somente dados gerais sobre o curso; nome, descrição, coordenador, identificação da instituição e coisas assim... Mas nada referente a uma realização dele.

Para isso você cria outra tabela, por exemplo "Turma", "CursoRealizado", ou algum nome assim... Quando um curso for realizado será fechada uma nova turma... Os alunos são ligados a uma Turma e não diretamente ao Curso, desta forma você pode ter N Turmas para o mesmo curso.

 

Para gerar várias Turmas no ano basta fazer um "for" incrementando as datas. Penso assim por que um aluno não se matricula em curso e sim em uma instância de curso.

 

Espero que ajude....

Abraço e até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E viva a Brasil Telecom!! Quase dois dias de "blackout" parcial aqui em Curitiba (e no resto do Paraná).. nem o forum aqui eu estava conseguindo acessar...

 

 

obrigado Carlos e ricna..

 

as duas respostas deram o mesmo caminho e acho que é por aí mesmo...

 

vou batalhar as alterações do sistema aqui e qqr dúvida volto a postar..

 

tks

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom amigos.. dando seqüência ao tópico...

 

Seguindo as sugestões, criei uma tabela adicional chamada "cursos_data" com a seguinte estrutura:

 

id_datacurso smallint(5) auto_increment

id_cursodata smallint(4)

data date

A tabela cursos agora ficou com a seguinte estrutura:

 

id_curso smallint(4)

divisao tinyint(2)

imagem varchar(100)

titulo varchar(100)

resumo text

curso text

Como existe mais de uma divisão ainda tenho a tabela "cursos_divisao"

id_cursodivisao tinyint(2)

nome_cursodivisao varchar(100)

O back-end já está todo alterado e funcionando corretamente. Cadastro, edição e exclusão para Divisão, Cursos e Datas.

 

No front-end já fiz as páginas inicial (que relaciona os próximos 6 cursos ordenado por data, independente da divisão), e a página calendario.php onde é listado os cursos, mês a mês.

 

Só para esclarecer.. na página inicial mostra a data de realização do curso, o título, a imagem e o resumo; na página curso mostra data, titulo, imagem e todos os detalhes (campo curso).

 

Estou com dificuldade agora para fazer a página das Divisões... Cada divisão deverá mostrar a lista dos respectivos cursos com as mesmas informações da página inicial (para cada curso é claro).

 

Segue código "empacado" da página de uma das divisões:

<?php
include "config/conexaotees.php";
	$sql_cursos = mysql_query("SELECT * FROM cursos WHERE divisao = '2'");
	$num_linhas = mysql_num_rows($sql_cursos);
	if ($num_linhas == "0")
	{
		echo ("<td>Não existe nenhum Curso cadastrado ...</td>"); 
	}
	else
	{
		while ($linha = mysql_fetch_array($sql_cursos)) 
		{
			$id_curso = $linha['id_curso'];
			$imagem = $linha['imagem'];
			$titulo = $linha['titulo'];
			$resumo = $linha['resumo'];

		
	$sql_datas = mysql_query("SELECT * FROM cursos_datas WHERE id_cursodata = 'id_curso' AND data  >= CURDATE() ORDER BY data ASC");
	$num_linhas = mysql_num_rows($sql_datas);
	$data = implode('/',array_reverse(explode('-',$linha['data'])));
			
?>

O código acima retorna erro na seguinte linha: $data = implode('/',array_reverse(explode('-',$linha['data'])));

e em seguida lista os cursos cadastrados na divisão, obviamente, quando existe mais de uma data para o mesmo curso, como está dando o erro na consulta à data, o cód. não lista os demais cadastrados...

 

Desde ontem estou tentando pensar nesse código mas não estou conseguindo resolver.. a princípio me parece que faltaria um array para 'guardar' a listagem dos cursos da tabela cursos_datas.. mas realmente não sei mais para onde ir... não consigo mais pensar logicamente em cima disso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

atualizando..

 

aí vai a solução para a questão 1 - Créditos ao grande amigo Jairo..

 

$sql_datas = mysql_query("SELECT * FROM cursos_datas LEFT JOIN cursos ON (cursos_datas.id_cursodata=cursos.id_curso) 
							WHERE cursos.divisao = '3' AND 
							cursos_datas.data >= CURDATE() 
							ORDER BY cursos_datas.data ASC");
							
$tem = mysql_num_rows($sql_datas);
if ($tem) {
	while ($d = mysql_fetch_array($sql_datas)) {
		extract($d);
		$sql_cursos = mysql_query("SELECT * FROM cursos WHERE id_curso = '$id_cursodata'");
		$c = mysql_fetch_array($sql_cursos);
		extract($c);
		$data = implode('/',array_reverse(explode('-',$data)));
		$cod = $id_curso;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.