Classe para gerar calendário em PHP

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

[ Hits: 17.997 ]

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

Transformar datas para gravar no banco de dados (MySQL, Postgres e outros)

format_calc()

Simulado semelhante ao do vol em PHP!

Agenda de contatos PHP

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