Classe para gerar calendário em PHP

Publicado por Edvaldo Silva de Almeida Júnior 13/06/2008

[ Hits: 18.020 ]

Homepage: http://emeraldframework.net

Download calendario.php




Essa é uma classe bem simples que gera um calendário. Ela recebe como parâmetros o mês e o ano do calendário desejado.

Pode ser que isso seja útil para alguém, de forma que estou publicando aqui.

  



Esconder código-fonte

<?php

               class Calendario {
      
      public $dia;
      public $mes;
      public $ano;
      public $tstamp;
      public $dtmanip;
      public $dsprimdia;
      public $linhafechada;
      
      public function Calendario( $pmes, $pano ) {
         $this->linhafechada = true;
         $this->dia = 1;
         $this->mes = $pmes;
         $this->ano = $pano;
         $this->calcula_tstamp();
         $this->data_manipulavel();
         $this->primeiro_dia_mes();
      }
      
      public function calcula_tstamp() {
         $this->tstamp = mktime( 0, 0, 0, $this->mes, $this->dia, $this->ano );
      }
      
      public function data_manipulavel() {
         $this->dtmanip = getdate( $this->tstamp );
      }
      
      public function primeiro_dia_mes() {
         $this->dsprimdia = $this->dtmanip[ "wday" ];
      }
      
      public function proximo_dia() {
         $this->dia++;
         $this->calcula_tstamp();         
      }
      
      public function exibe_calendario() {
         $larg = 100.0/7.0;
         echo "<table border='1' width='100%' cellpadding='0' cellspacing='0' align='center' bordercolor='#333333'>\n";
         echo "<tr class='titulotabela'>\n";
         echo "<td align='center' width='".$larg."%'>Dom</td>\n";         
         echo "<td align='center' width='".$larg."%'>Seg</td>\n";
         echo "<td align='center' width='".$larg."%'>Ter</td>\n";         
         echo "<td align='center' width='".$larg."%'>Qua</td>\n";
         echo "<td align='center' width='".$larg."%'>Qui</td>\n";         
         echo "<td align='center' width='".$larg."%'>Sex</td>\n";
         echo "<td align='center' width='".$larg."%'>Sab</td>\n";         
         echo "</tr>\n";
         
         $ccol = 0;
         $casa = 0;
         while( checkdate( $this->mes, $this->dia, $this->ano ) ) {
            if ( $this->linhafechada ) {
               echo "<tr>\n";
               $this->linhafechada = false;
            }
            if ( $casa < $this->dsprimdia ) {
               echo "<td> </td>\n";
            } else {
               echo "<td align='center'>\n";
               echo $this->dia."\n";
               echo "</td>\n";
               $this->proximo_dia();
            }
            $ccol++;
            $ccol = $ccol % 7;
            $casa++;
            if ( ( $casa % 7 ) == 0 ) {
               echo "</tr>\n";
               $this->linhafecha = true;
            }
         }
         while( $ccol != 0 ) {
            $ccol++;
            $ccol = $ccol % 7;
            echo "<td> </td>\n";
         }
         echo "</tr>\n";
         
         echo "</table>\n";
      }
      
   }


?>

Scripts recomendados

Tempo de execução do script em PHP

Telefones Públicos da Anatel

Criador de botões

Data em extenso para Cabeçalho

Criando um menu de paginação de resultados com algumas funcionalidades


  

Comentários
[1] Comentário enviado por fernando0973 em 24/06/2008 - 00:37h

Olá. Sou iniciante em PHP e gostaria de uma explicação de como utilizar esta classe. Obrigado

[2] Comentário enviado por EdDeAlmeida em 30/06/2008 - 13:41h

Você só precisa instanciar um objeto dessa classe no ponto do seu código onde deseja que o calendário apareça.

[3] Comentário enviado por EdDeAlmeida em 30/06/2008 - 13:42h

Exemplo:

$mes = 7;
$ano = 2008;
$calend = new Calendario( $mes, $ano );


[4] Comentário enviado por guilecardoso em 31/03/2011 - 21:45h

Sei que já faz bastante tempo que foi postado este script mas encontrei um erro e aí segue a correção

falta uma linha na function Calendario
$this->exibe_calendario();

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts