Ir ao conteúdo
  • Cadastre-se

Problema com calendário


Jeffersonjulio

Posts recomendados

Olá sou novo no fórum!, tenho um problema que não estou conseguindo resolver é o seguinte:

OBS: Abaixo eu fiz uma longa descrição do que estou querendo fazer, bem abaixo no final descrevi qual é o meu problema!

Estou embutindo um calendário pra um site que estou fazendo ele funciona legalzinho. É uma função que cria automaticamente uma tabela contendo os dias e já divide em semanas também. E eu estou tentando ponha-lo na lateral do site que estou criando. E fiz o seguinte criei uma Session que tem o valor do mês atual e também do ano Assim:


<?php
if(!isset($_SESSION['mes']) && $_SESSION['mes'] == ''){
session_start();
$_SESSION['mes'] = date("m");
$_SESSION['ano'] = date("Y");
}
?>

Depois fiz uma filtragem dando nome aos meses assim:


<?php
$mes_numero = $_SESSION['mes'];
if($mes_numero == '01'){
$mes_escrito = 'Janeiro';
$mes_numero_com_zero = '01';
}
if($mes_numero == '02'){
$mes_escrito = 'Fevereiro';
$mes_numero_com_zero = '02';
}
if($mes_numero == '03'){
$mes_escrito = 'Março';
$mes_numero_com_zero = '03';
}
if($mes_numero == '04'){
$mes_escrito = 'Abril';
$mes_numero_com_zero = '04';
}
if($mes_numero == '05'){
$mes_escrito = 'Maio';
$mes_numero_com_zero = '05';
}
if($mes_numero == '06'){
$mes_escrito = 'Junho';
$mes_numero_com_zero = '06';
}
if($mes_numero == '07'){
$mes_escrito = 'Julho';
$mes_numero_com_zero = '07';
}
if($mes_numero == '08'){
$mes_escrito = 'Agosto';
$mes_numero_com_zero = '08';
}
if($mes_numero == '09'){
$mes_escrito = 'Setembro';
$mes_numero_com_zero = '09';
}
if($mes_numero == '10'){
$mes_escrito = 'Outubro';
$mes_numero_com_zero = '10';
}
if($mes_numero == '11'){
$mes_escrito = 'Novembro';
$mes_numero_com_zero = '11';
}
if($mes_numero == '12'){
$mes_escrito = 'Dezembro';
$mes_numero_com_zero = '12';
}
echo $mes_escrito ;
;?>

Logo depois chamei ele na função:


echo MostreCalendario($mes_numero_com_zero, $_SESSION['ano']);

A função é essa:


<?php
function MostreSemanas()
{
$semanas = "DSTQQSS";

for( $i = 0; $i < 7; $i++ )
echo '<td align="center" valign="middle" class="semana_calendario" height="35" bgcolor="#B2C1B2"><p>'.$semanas{$i}.'</p></td>';

}

function GetNumeroDias( $mes_calendario )
{
$numero_dias = array(
'01' => 31, '02' => 28, '03' => 31, '04' =>30, '05' => 31, '06' => 30,
'07' => 31, '08' =>31, '09' => 30, '10' => 31, '11' => 30, '12' => 31
);

if ((($ano_calendario % 4) == 0 and ($ano_calendario % 100)!=0) or ($ano_calendario % 400)==0)
{
$numero_dias['02'] = 29; // altera o numero de dias de fevereiro se o ano for bissexto
}

return $numero_dias[$mes_calendario];
}



function MostreCalendario($mes_calendario, $ano_calendario)
{

$numero_dias = GetNumeroDias( $mes_calendario ); // retorna o número de dias que tem o mes desejado
$diacorrente = 0;

$diasemana = jddayofweek( cal_to_jd(CAL_GREGORIAN, $mes_calendario,"01",$ano_calendario) , 0 ); // função que descobre o dia da semana

echo "<table border = 0 cellspacing = '0' width= '300' class='table_calendario'>";

echo "<tr class = 'linha_semanas'>";
MostreSemanas(); // função que mostra as semanas aqui
echo "</tr>";
for( $linha = 0; $linha < 6; $linha++ )
{


echo "<tr>";

for( $coluna = 0; $coluna < 7; $coluna++ )
{
echo "<td align= center valign= middle width = 10 height = 10 ";

if( ($diacorrente == ( date('d') - 1) && $mes_calendario == $mes_calendario) )
{
echo " id = 'dia_atual' ";
}
else
{
if(($diacorrente + 1) <= $numero_dias )
{
if( $coluna < $diasemana && $linha == 0)
{
echo " id = 'dia_branco' ";
}
else
{
echo " id = 'dia_comum' ";
}
}
else
{
echo " ";
}
}
echo " >";


/* TRECHO IMPORTANTE: a partir DESTE TRECHO É MOSTRADO UM DIA DO CALENDÁRIO (MUITA ATENÇÃO NA HORA DA MANUTENÇÃO) */

if( $diacorrente + 1 <= $numero_dias )
{
if( $coluna < $diasemana && $linha == 0)
{
echo " ";
}
else
{
// echo "<input type = 'button' id = 'dia_comum' name = 'dia".($diacorrente+1)."' value = '".++$diacorrente."' onclick = \"acao(this.value)\">";
echo "<a href = ".$_SERVER["PHP_SELF"]."?pg=agenda&dia=".$ano_calendario."-".$mes_calendario."-".($diacorrente+1).">".++$diacorrente . "</a>";
}
}
else
{
break;
}

/* FIM DO TRECHO MUITO IMPORTANTE */



echo "</td>";
}
echo "</tr>";
}

echo "</table>";
}

function MostreCalendarioCompleto()
{
echo "<table>";
$cont = 1;
for( $j = 0; $j < 4; $j++ )
{
echo "<tr>";
for( $i = 0; $i < 3; $i++ )
{

echo "<td>";
MostreCalendario( ($cont < 10 ) ? "0".$cont : $cont );

$cont++;
echo "</td>";

}
echo "</tr>";
}
echo "</table>";
}

?>

Até aí tudo bem ! Como eu gostaria que os internautas pudessem ter acesso aos outros meses anteriores, e os próximos, pois quero que esse calendário se trate de uma, agenda de eventos aonde colocarei dinamicamente nele os eventos referente ao seu dia ! Então criei um Formúlario apenas com o botão para depois criar uma ação com o mesmo, um botão de próximo mes e mês anterior!:


<form enctype="multipart/form-data" action="" method="get">

<input type="submit" name="acao_calendario" value="anterior" class="btn_a"/></form>
<form enctype="multipart/form-data" action="" method="get">
<input type="submit" name="acao_calendario" value="próximo" class="btn_p"/></form>

Depois a condição para atualizar a Sessão que iniciei que se refere ao mês atual é alterado e somado mais 1 ou menos 1 dependendo do botão em que é clicado


if(isset($_GET['acao_calendario']) && $_GET['acao_calendario'] == 'anterior'){
$session_primeiro = $_SESSION['primeiro'];
if(!isset($session_primeiro) || $session_primeiro == ''){
$pega_sessao = $_SESSION['mes'];
$numero = '01';
$nova_sessao = $pega_sessao - $numero;
unset($_SESSION['mes']);
unset($_SESSION['primeiro']);
session_destroy();
session_start();
$_SESSION['mes'] = $nova_sessao;
$_SESSION['primeiro'] = 'primeiro';
}elseif(isset($session_primeiro) && $session_primeiro == 'primeiro'){
$pega_sessao = $_SESSION['mes'];
$numero = '01';
$nova_sessao = $pega_sessao - $numero;
unset($_SESSION['mes']);
unset($_SESSION['primeiro']);
session_destroy();
session_start();
$_SESSION['mes'] = $nova_sessao;
$_SESSION['primeiro'] = 'segundo';
}elseif(isset($session_primeiro) && $session_primeiro == 'segundo'){
$pega_sessao = $_SESSION['mes'];
$numero = '01';
$nova_sessao = $pega_sessao - $numero;
unset($_SESSION['mes']);
unset($_SESSION['primeiro']);
session_destroy();
session_start();
$_SESSION['mes'] = $nova_sessao;
};
}
if(isset($_GET['acao_calendario']) && $_GET['acao_calendario'] == 'próximo'){
$session_primeiro = $_SESSION['primeiro'];
if(!isset($session_primeiro) || $session_primeiro == ''){
$pega_sessao = $_SESSION['mes'];
$numero = '01';
$nova_sessao = $pega_sessao + $numero;
unset($_SESSION['mes']);
unset($_SESSION['primeiro']);
session_destroy();
session_start();
$_SESSION['mes'] = $nova_sessao;
$_SESSION['primeiro'] = 'primeiro';
}elseif(isset($session_primeiro) && $session_primeiro == 'primeiro'){
$pega_sessao = $_SESSION['mes'];
$numero = '01';
$nova_sessao = $pega_sessao + $numero;
unset($_SESSION['mes']);
unset($_SESSION['primeiro']);
session_destroy();
session_start();
$_SESSION['mes'] = $nova_sessao;
$_SESSION['primeiro'] = 'segundo';
}elseif(isset($session_primeiro) && $session_primeiro == 'segundo'){
$pega_sessao = $_SESSION['mes'];
$numero = '01';
$nova_sessao = $pega_sessao + $numero;
unset($_SESSION['mes']);
unset($_SESSION['primeiro']);
session_destroy();
session_start();
$_SESSION['mes'] = $nova_sessao;
};
}

e depois uma condição para carregar um novo calendário com um novo mês conforme o que estiver na Session !

<?php 
if(isset($_GET['acao_calendario']) && $_GET['acao_calendario'] == 'anterior'){
echo MostreCalendario($mes_numero_com_zero, $_SESSION['ano']);
// echo "<meta HTTP-EQUIV='refresh' CONTENT='2'>";
}
if(isset($_GET['acao_calendario']) && $_GET['acao_calendario'] == 'próximo'){
echo MostreCalendario($mes_numero_com_zero, $_SESSION['ano']);
}
if(!isset($_GET['acao_calendario']) && $_GET['acao_calendario'] == ''){
echo MostreCalendario($mes_numero_com_zero, $_SESSION['ano']);
}
?>

Agora o problema que estou tendo, quando clico para ir para o próximo mês ele vai normal, porém quando clico de novo para ir para o próximo mês ele permanece no mesmo e não altera nada e para o anterior é a mesma coisa !

Será que errei em alguma parte do código na qual n estou conseguindo identificar ?

Seria melhor eu usar outra forma para que eu consiga executar um calendário assim ?

Ou alguém conhece algum jQuery ou JavaScript ou algo do gênero que faça isso ? por que já tentei procurar várias vezes no google e não encontrei nenhuma solução !

Me desculpem pelo Tópico Gigante hehehe é que eu quis detalhar o máximo possível para poder expressar bem o meu problema !

Se alguém puder me ajudar eu agradeço !

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...