Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 33
Sexo: Masculino

Sistema de agenda para professores

16-10-2011 17:03

Boa tarde, pessoal.
Estou tentando fazer um sisteminha em PHP que está me deixando maluco, apesar de parecer simples.
Eu preciso montar uma tabela com o seguinte formato:

Professor: (nome do professor)

-----------------------------------------------------------------------------------------------------------------------------------------------------------
|hora de início e hora de término | segunda feira | terca feira | quarta feira | quinta feira | sexta feira | sábado | domingo |
-----------------------------------------------------------------------------------------------------------------------------------------------------------
| (hora de inicio e hora de fim) | aluno1 | | aluno1 | | | | |
-----------------------------------------------------------------------------------------------------------------------------------------------------------
| )hora de inicio e hora de fim | |aluno2 | | aluno2 | | aluno3 | |

A primeira coluna (que mostra a hora de inicio e a hora de término) não poderá conter duas linhas com o mesmo valor. Por exemplo, se no horário das 13:00 às 14:00 o professor tiver um aluno na segunda, e outro na sexta, a linha com esse horário deverá mostrar o nome dos dois alunos, cada um no respectivo dia de alua.

Assim, o professor da escola poderá saber quando e quais alunos terá naquele dia da semana e em qual horário.

Para tanto, eu pensei na seguinte estrutura de tabela do MYSQL: id(INT), professorid(TEXT), alunoid(TEXT), dia(TEXT), hora_inic(TIME), hora_term(TIME).

Cada linha de registro seria um dia da semana. Assim, caso um aluno faça aulas nas terças e quintas, teria de haver dois registros com o mesmo alunoid no BD.

Estou tentando escrever o código (que parece ser bem simples de fazer), mas não estou conseguindo obter o resultado correto. Eis o código que eu já escrevi:

<table border="1"> <tr> <td></td> <td>SEGUNDA</td> <td>TERÇA</td> <td>QUARTA</td> <td>QUINTA</td> <td>SEXTA</td> <td>SÁBADO</td> <td>DOMINGO</td> </tr> <? $resultado_horas_agenda = mysql_query("SELECT DISTINCT * FROM agenda WHERE profid='1 '"); while($resultado_horas_agenda2 = mysql_fetch_array($resultado_horas_agenda)){ $hora_inic = $resultado_horas_agenda2['hora_inic']; $hora_term = $resultado_horas_agenda2['hora_term']; //MOSTRA TODOS OS HORÁRIOS echo "<tr><td>$hora_inic"." - "."$hora_term</td>";} $resultado_nomes_agenda = mysql_query("SELECT * FROM agenda WHERE hora_inic='$hora_inic' AND hora_term='$hora_term' AND profid='1'"); while($resultado_nomes_agenda2 = mysql_fetch_array($resultado_nomes_agenda)){ $id = $resultado_nomes_agenda2['id']; $aluno = $resultado_nomes_agenda2['alunoid']; $dia = $resultado_nomes_agenda2['dia']; echo"<td>"; if($dia =="seg"){echo"$aluno";} echo "</td>"; echo"<td>";if($dia == "ter"){echo "$aluno";} echo "</td>"; echo"<td>";if($dia == "qua"){echo "$aluno";} echo "</td>"; echo"<td>";if($dia == "qui"){echo "$aluno";} echo "</td>"; echo"<td>";if($dia == "sex"){echo "$aluno";} echo "</td>"; echo"<td>";if($dia == "sab"){echo "$aluno";} echo "</td>"; echo"<td>";if($dia == "dom"){echo "$aluno";} echo "</td>"; echo"</tr>"; }} ?> </table>

espero que possam me ajudar com idéias ou com um código mais ou menos parecido...
Obrigado

MOVIDO PARA MYSQL
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Sistema de agenda para professores

16-10-2011 17:13

Eu acharia melhor essa estrutura:

id | hora | dia
- 1 | 13:00 | Segunda
- 2 | 13:00 | Sexta

Assim fica melhor até para inserção de novos horários, porque você pode verificar antes do insert, se já existe algo na hora e dia

WHERE hora=... AND dia=...

Assim não permite outro registro igual.

Agora o SQL que você postou não entendi o que quer fazer.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 33
Sexo: Masculino

Sistema de agenda para professores

16-10-2011 17:26

Essa estrutura que você colocou é para a tabela html? O pessoal da escola precisa que seja exibida uma grade horária do professor, constando todos os horários e os dias da semana, e quais alunos em cada horário... de preferência em formato de tabela.

Por isso que no HTML mostra os dias da semana e no BD tem aqueles campos.

Sobre a SQL, acredito que não fiz corretamente. Estou em dúvida de como fazer essa consulta e imprimir na tabela HTML, de modo que os horários que estão sendo exibidos na primeira coluna não se repitam (por exemplo, na coluna da esqueda, não poderá mostrar duas vezes "14:00 às 15:00", mas deverá mostrar só uma vez isso, de modo que em todos os dias da semana que tenham aula neste horário, seja mostrado o nome do aluno no respectivo dia da semana.

Enfim.. o que eu preciso fazer é uma simples grade horária das aulas de um determinado professor.
0
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 33
Sexo: Masculino

Sistema de agenda para professores

16-10-2011 17:34

o que eu preciso é mais ou menos o que foi mostrado nesse site:
http://forum.imasters.com.br/topic/3781 ... e-horaria/
mas com a diferença de que os horários exibidos à esquerda só apareceram se houver algum registro com esse horário no BD.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Sistema de agenda para professores

16-10-2011 18:11

Vou te passar uma base que fiz.

Estrutura da tabela dados com alguns valores

-- -- Estrutura da tabela `dados` -- CREATE TABLE IF NOT EXISTS `dados` ( `id` int(10) NOT NULL, `aluno` varchar(30) NOT NULL, `hora` varchar(10) NOT NULL, `dia` varchar(15) NOT NULL ) INSERT INTO `dados` (`id`, `aluno`, `hora`, `dia`) VALUES (1, 'João', '09:00', 'Segunda'), (2, 'Maria', '10:00', 'Terça'), (3, 'Pedro', '08:00', 'Quarta');

Para chamar os dados na tabela fiz assim

echo "<table border=\"1\"> <tr> <td>hora</td> <td>Segunda</td> <td>Terça</td> <td>Quarta</td> <td>Quinta</td> <td>Sexta</td> <td>Sábado</td> </tr>"; $query=mysql_query("SELECT id, aluno, hora, dia FROM dados ORDER BY hora"); while($dados=mysql_fetch_array($query)) { extract($dados); echo "<tr> <td>$hora</td> <td>"; if($dia=="Segunda") { echo "$aluno"; } echo "</td> <td>"; if($dia=="Terça") { echo "$aluno"; } echo "</td> <td>"; if($dia=="Quarta") { echo "$aluno"; } echo "</td> <td>"; if($dia=="Quinta") { echo "$aluno"; } echo "</td> <td>"; if($dia=="Sexta") { echo "$aluno"; } echo "</td> <td>"; if($dia=="Sábado") { echo "$aluno"; } echo "</td> </tr>"; } echo "</table>";

Dessa forma, somente os dados que existem aparecem na lista, e o nome do aluno em cada dia respectivo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 33
Sexo: Masculino

Sistema de agenda para professores

16-10-2011 18:34

Obrigadão, WEb,

Mas é quase isso. Eu adicionei novos registros no BD e imprimi o seguinte:

hora Segunda Terça Quarta Quinta Sexta Sábado
08:00 maria
08:00 maria
09:00 Joao
10:00 Marcos


Ou seja, imprimiu 08:00 duas vezes, quando deveria mostrar o seguinte:


hora Segunda Terça Quarta Quinta Sexta Sábado
08:00 maria maria
09:00 Joao
10:00 Marcos

Se puder me ajudar com isso...

Obrigado!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Sistema de agenda para professores

16-10-2011 20:20

Eu fiz uma consulta para listar os horários, e fiz uma consulta dentro de uma função para listar os usuários do horário.

echo "<table border=\"1\"> <tr> <td>hora</td> <td>Segunda</td> <td>Terça</td> <td>Quarta</td> <td>Quinta</td> <td>Sexta</td> <td>Sábado</td> </tr>"; function Dados($Hora, $Dia) { $query=mysql_query("SELECT hora, dia, aluno FROM dados WHERE dia='$Dia' AND hora='$Hora'"); while($dados=mysql_fetch_array($query)) { extract($dados); return $aluno; } } $query=mysql_query("SELECT hora, id, dia, aluno FROM dados GROUP BY hora ORDER BY hora"); while($dados=mysql_fetch_array($query)) { extract($dados); echo "<tr> <td>$hora</td> <td>"; echo Dados("$hora", "Segunda"); echo "</td> <td>"; echo Dados("$hora", "Terça"); echo "</td> <td>"; echo Dados("$hora", "Quarta"); echo "</td> <td>"; echo Dados("$hora", "Quinta"); echo "</td> <td>"; echo Dados("$hora", "Sexta"); echo "</td> <td>"; echo Dados("$hora", "Sábado"); echo "</td> </tr>"; } echo "</table>";

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 33
Sexo: Masculino

Sistema de agenda para professores

16-10-2011 21:02

Valew!!!
0
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 33
Sexo: Masculino

Sistema de agenda para professores

17-10-2011 15:40

Boa tarde,

Este código realmente funcionou. Todavia, na tabela que grava a agenda será gravado o ID do aluno, e não o seu nome.
Assim, eu preciso que seja impresso o NOME (da tabela CADASTRO_PESSOAS) que corresponde a este ID.

Eu sei que o caminho seria o INNER JOIN, mas eu não consigo usa-lo corretamente.

A tabela cadastro_pessoas possui, dentre outros, os seguintes campos ID e NOME.

Meu código, até o momento é este:
echo "<table border=\"1\"> <tr> <td>hora</td> <td>Segunda</td> <td>Terça</td> <td>Quarta</td> <td>Quinta</td> <td>Sexta</td> <td>Sábado</td> </tr>"; function Dados($Hora, $Dia) { $query=mysql_query("SELECT hora, dia, aluno FROM agenda WHERE dia='$Dia' AND hora='$Hora'"); while($dados=mysql_fetch_array($query)) { extract($dados); return $aluno; } } $query=mysql_query("SELECT hora, id, dia, aluno FROM agenda WHERE aluno='110' GROUP BY hora ORDER BY hora"); while($dados=mysql_fetch_array($query)) { extract($dados); echo "<tr>&nbsp; <td>$hora</td> <td>"; echo Dados("$hora", "Segunda"); echo "&nbsp;</td> <td>"; echo Dados("$hora", "Terça"); echo "&nbsp;</td> <td>"; echo Dados("$hora", "Quarta"); echo "&nbsp;</td> <td>"; echo Dados("$hora", "Quinta"); echo "&nbsp;</td> <td>"; echo Dados("$hora", "Sexta"); echo "&nbsp;</td> <td>"; echo Dados("$hora", "Sábado"); echo "&nbsp;</td> </tr>"; } echo "</table>"; }

Se alguém puder dar uma força...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Sistema de agenda para professores

17-10-2011 16:30

É mostrado nesse link a relação entre as duas tabelas
Consulta-com-comparacao-em-2-tabelas_33_783.html
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado