Boa tarde, uma vez mais estou com um problema no calendário de eventos que estou a desenvolver.
Para se poderem inserir eventos é necessário ativar a parte central de cada célula pelo que uso uma linha de código para o efeito, colocada antes do ciclo while() mas dentro do ciclo for(), que se aplica a todas as células, quer tenham eventos já inseridos ou não.
O problema é que apenas a primeira linha (semana) está a funcionar como o previsto as restantes linhas apenas os domingos estão a funcionar.
A linha de código em questão:
Código (PHP):
Código completo:
Código (PHP):
Gostaria de saber o que estarei a fazer de errado.
Obrigado
Para se poderem inserir eventos é necessário ativar a parte central de cada célula pelo que uso uma linha de código para o efeito, colocada antes do ciclo while() mas dentro do ciclo for(), que se aplica a todas as células, quer tenham eventos já inseridos ou não.
O problema é que apenas a primeira linha (semana) está a funcionar como o previsto as restantes linhas apenas os domingos estão a funcionar.
A linha de código em questão:
Código (PHP):
echo "<a class='calendario' href='novo_evento.php?data_evento=". @$data_hoje ."'>";
Código completo:
Código (PHP):
<?php
// Função para criar abreviatura do evento
function resumo_evento($descricao_evento){
$resumo_evento = "";
$resumo_evento = (substr($descricao_evento, 0, 15));
return $resumo_evento;
}
echo "<table class=\"calendario\" cellspacing=\"0\" cellpadding=\"1\" border=\"1\">";
echo "<tr>";
echo "<th height=\"30\">Domingo</th>";
echo "<th height=\"30\">Segunda</th>";
echo "<th height=\"30\">Terça</th>";
echo "<th height=\"30\">Quarta</th>";
echo "<th height=\"30\">Quinta</th>";
echo "<th height=\"30\">Sexta</th>";
echo "<th height=\"30\">Sábado</th>";
echo "</tr>";
// Variavel para iniciar a contagem de dias
$contar_dias = 1;
// Variavel para iniciar a contagem de dias restantes
$contar_dias_resto = 1;
if(isset($_GET['date'])){
$separar_data = explode("-", $_GET['date']);
$mes = $separar_data[0];
$ano = $separar_data[1];
$dia = date("t", mktime(0, 0, 0, $mes, 1, $ano));
}
else{
$mes = date("n");
$dia = date("t");
$ano = date("Y");
}
// Criação da tabela com os dias da semana
$colunas_tabela = 7;
// Calcular numero de dias da primeira semana
$dia_semana = date("w", mktime(-1, 0, 0, $mes, 1, $ano));
// Criação de células em branco na primeira linha
for($celulas=0; $celulas <= $dia_semana; $celulas++)
{
echo "<td class=\"calendario\" width=\"100\" height=\"20\">";
echo "</td>";
}
// Calcular dias preenchidos da primeira linha
$contar_dias_restantes = 5 - $dia_semana;
// Criar parte de cima das células da primeira linha
for($celulas=0; $celulas <= $contar_dias_restantes; $celulas++) {
echo "<td class=\"datas\" width=\"100\" height=\"20\">";
$mostrar = date("j", mktime(0, 0, 0, $mes, $contar_dias, $ano));
$dia_atual = date("d");
$mes_atual = date("n");
$ano_atual = date("Y");
// Mostrar informação se o dia atual está na primeira linha
if($contar_dias == $dia_atual AND $mes == $mes_atual AND $ano == $ano_atual) {
echo "<strong>Hoje " . $mostrar . "</strong>";
}
else{
echo $mostrar;
}
echo "</td>";
$contar_dias++;
}
echo "</tr>";
echo "<tr>";
// Colocar número do dia nas células da primeira linha
for($celulas1=0; $celulas1 <= $dia_semana; $celulas1++) {
echo "<td class=\"calendario\" width=\"100\" height=\"20\">";
if($contar_dias_resto <= $dia) {
}
echo "</td>";
}
// Criar parte de baixo das células da primeira linha
for($celulas1=0; $celulas1 <= $contar_dias_restantes; $celulas1++) {
echo "<td class=\"calendario\" width=\"110\" height=\"50\">";
echo "<a class='calendario' href='novo_evento.php?data_evento=". @$data_hoje ."'>"; // <-----Linha de códio que ativa as células para inserir eventos.
$data_hoje = $ano . "-0" . $mes . "-0" . $contar_dias_resto;
// Mostrar eventos existentes na base de dados
$sql = "SELECT * FROM eventos WHERE data_evento ='$data_hoje';";
$consulta = mysql_query($sql);
while($resultado=mysql_fetch_assoc($consulta)){
// Resumo e hiperligação do evento existente
echo "<a class='evento' href='detalhe_evento.php?id_evento=". $resultado['id_evento'] . "'>". resumo_evento($resultado['titulo_evento']) . "</a><br />";
}
echo "</td>";
$contar_dias_resto++; }
// Calcular ultima linha do mês
$num_linhas = ceil(($dia + $dia_semana) / $colunas_tabela);
for($celulas=1; $celulas <=($num_linhas-1); $celulas++) {
echo "<tr>";
// Criar parte de cima das células das restantes linhas
for($celulas2=0; $celulas2 <= (@$colunas_tabela-1); $celulas2++) {
echo "<td class=\"datas\" width=\"100\" height=\"20\">";
$mostrar = date("j", mktime(0, 0, 0, $mes, $contar_dias, $ano));
$dia_atual = date("d");
$mes_atual = date("n");
$ano_atual = date("Y");
// Verificar se o dia atual está nas restantes linhas da tabela
if($contar_dias == $dia_atual AND $mes == $mes_atual AND $ano == $ano_atual) {
echo "<strong>Hoje " . $mostrar . "</strong>"; }
else{
echo $mostrar; }
echo "</td>";
$contar_dias++; }
echo "</tr>";
echo "<tr>";
// Criar parte de baixo das células das restantes linhas
for($celulas2=0; $celulas2 <=@$colulas_tabela; $celulas2++) {
echo "<td class=\"calendario\" width=\"110\" height=\"50\">";
echo "<a class='calendario' href='novo_evento.php?data_evento=". @$data_hoje ."'>"; // <-----Linha de códio que ativa as células para inserir eventos.
if($contar_dias_resto <= $dia){
$data_hoje = $ano . "-" . $mes . "-" . $contar_dias_resto;
// Selecionar todos os eventos para uma data
$sql = "SELECT * FROM eventos WHERE data_evento ='$data_hoje';";
$consulta = mysql_query($sql);
while($resultado = mysql_fetch_assoc($consulta)){
// Resumo e hiperligação do evento existente
echo "<a class='evento' href='detalhe_evento.php?id_evento=". $resultado['id_evento'] . "'>". resumo_evento($resultado['titulo_evento']) . "</a><br />";
}
}
echo "</td>";
$contar_dias_resto++; }
echo "</tr>";}
echo "</table>";
?>
// Função para criar abreviatura do evento
function resumo_evento($descricao_evento){
$resumo_evento = "";
$resumo_evento = (substr($descricao_evento, 0, 15));
return $resumo_evento;
}
echo "<table class=\"calendario\" cellspacing=\"0\" cellpadding=\"1\" border=\"1\">";
echo "<tr>";
echo "<th height=\"30\">Domingo</th>";
echo "<th height=\"30\">Segunda</th>";
echo "<th height=\"30\">Terça</th>";
echo "<th height=\"30\">Quarta</th>";
echo "<th height=\"30\">Quinta</th>";
echo "<th height=\"30\">Sexta</th>";
echo "<th height=\"30\">Sábado</th>";
echo "</tr>";
// Variavel para iniciar a contagem de dias
$contar_dias = 1;
// Variavel para iniciar a contagem de dias restantes
$contar_dias_resto = 1;
if(isset($_GET['date'])){
$separar_data = explode("-", $_GET['date']);
$mes = $separar_data[0];
$ano = $separar_data[1];
$dia = date("t", mktime(0, 0, 0, $mes, 1, $ano));
}
else{
$mes = date("n");
$dia = date("t");
$ano = date("Y");
}
// Criação da tabela com os dias da semana
$colunas_tabela = 7;
// Calcular numero de dias da primeira semana
$dia_semana = date("w", mktime(-1, 0, 0, $mes, 1, $ano));
// Criação de células em branco na primeira linha
for($celulas=0; $celulas <= $dia_semana; $celulas++)
{
echo "<td class=\"calendario\" width=\"100\" height=\"20\">";
echo "</td>";
}
// Calcular dias preenchidos da primeira linha
$contar_dias_restantes = 5 - $dia_semana;
// Criar parte de cima das células da primeira linha
for($celulas=0; $celulas <= $contar_dias_restantes; $celulas++) {
echo "<td class=\"datas\" width=\"100\" height=\"20\">";
$mostrar = date("j", mktime(0, 0, 0, $mes, $contar_dias, $ano));
$dia_atual = date("d");
$mes_atual = date("n");
$ano_atual = date("Y");
// Mostrar informação se o dia atual está na primeira linha
if($contar_dias == $dia_atual AND $mes == $mes_atual AND $ano == $ano_atual) {
echo "<strong>Hoje " . $mostrar . "</strong>";
}
else{
echo $mostrar;
}
echo "</td>";
$contar_dias++;
}
echo "</tr>";
echo "<tr>";
// Colocar número do dia nas células da primeira linha
for($celulas1=0; $celulas1 <= $dia_semana; $celulas1++) {
echo "<td class=\"calendario\" width=\"100\" height=\"20\">";
if($contar_dias_resto <= $dia) {
}
echo "</td>";
}
// Criar parte de baixo das células da primeira linha
for($celulas1=0; $celulas1 <= $contar_dias_restantes; $celulas1++) {
echo "<td class=\"calendario\" width=\"110\" height=\"50\">";
echo "<a class='calendario' href='novo_evento.php?data_evento=". @$data_hoje ."'>"; // <-----Linha de códio que ativa as células para inserir eventos.
$data_hoje = $ano . "-0" . $mes . "-0" . $contar_dias_resto;
// Mostrar eventos existentes na base de dados
$sql = "SELECT * FROM eventos WHERE data_evento ='$data_hoje';";
$consulta = mysql_query($sql);
while($resultado=mysql_fetch_assoc($consulta)){
// Resumo e hiperligação do evento existente
echo "<a class='evento' href='detalhe_evento.php?id_evento=". $resultado['id_evento'] . "'>". resumo_evento($resultado['titulo_evento']) . "</a><br />";
}
echo "</td>";
$contar_dias_resto++; }
// Calcular ultima linha do mês
$num_linhas = ceil(($dia + $dia_semana) / $colunas_tabela);
for($celulas=1; $celulas <=($num_linhas-1); $celulas++) {
echo "<tr>";
// Criar parte de cima das células das restantes linhas
for($celulas2=0; $celulas2 <= (@$colunas_tabela-1); $celulas2++) {
echo "<td class=\"datas\" width=\"100\" height=\"20\">";
$mostrar = date("j", mktime(0, 0, 0, $mes, $contar_dias, $ano));
$dia_atual = date("d");
$mes_atual = date("n");
$ano_atual = date("Y");
// Verificar se o dia atual está nas restantes linhas da tabela
if($contar_dias == $dia_atual AND $mes == $mes_atual AND $ano == $ano_atual) {
echo "<strong>Hoje " . $mostrar . "</strong>"; }
else{
echo $mostrar; }
echo "</td>";
$contar_dias++; }
echo "</tr>";
echo "<tr>";
// Criar parte de baixo das células das restantes linhas
for($celulas2=0; $celulas2 <=@$colulas_tabela; $celulas2++) {
echo "<td class=\"calendario\" width=\"110\" height=\"50\">";
echo "<a class='calendario' href='novo_evento.php?data_evento=". @$data_hoje ."'>"; // <-----Linha de códio que ativa as células para inserir eventos.
if($contar_dias_resto <= $dia){
$data_hoje = $ano . "-" . $mes . "-" . $contar_dias_resto;
// Selecionar todos os eventos para uma data
$sql = "SELECT * FROM eventos WHERE data_evento ='$data_hoje';";
$consulta = mysql_query($sql);
while($resultado = mysql_fetch_assoc($consulta)){
// Resumo e hiperligação do evento existente
echo "<a class='evento' href='detalhe_evento.php?id_evento=". $resultado['id_evento'] . "'>". resumo_evento($resultado['titulo_evento']) . "</a><br />";
}
}
echo "</td>";
$contar_dias_resto++; }
echo "</tr>";}
echo "</table>";
?>
Gostaria de saber o que estarei a fazer de errado.
Obrigado