Desenvolvendo um componente de calendário dinâmico em PHP

Estou desenvolvendo uma aplicação em PHP que vai utilizar módulos, já tenho muitas coisas desenvolvidas para o sistema. A medida que eu for terminando meus componentes, pretendo escrever passo a passo como foram desenvolvidos cada um deles. Hoje irei falar sobre o primeiro módulo (calendário).

[ Hits: 29.460 ]

Por: Leonam Souza em 09/11/2007


Preparando o espaço para trabalhar



Geralmente eu costumo a utilizar o fireworks para desenhar os componentes e depois trabalhar o código em cima, desta forma eu evito perder tempo com html e ganhar tempo na programação em php.

Bom, neste caso eu desenhei a tabela do calendário (calendario2.jpg), reservei campos para o nome do mês, os dias da semana e claro, os dias do mês. Após ter desenhado o calendário, é hora de fatiar a imagem para que a mesma seja exportada em html, com suas respectivas celulas já fatiadas (calendario.jpg).

Eu costumo a utilizar o dreamweaver somente como um ajuste final, mas esta etapa eu vou explicar depois.

Bom, já que agora já criamos o nosso espaço de trabalho, é hora de trabalhar de verdade e colocar a mão na massa, vamos analisar o código php.

Obtendo informações do sistema

Bom, o código é muito simples. Ele na verdade é dividido em duas partes:
  1. Obter as datas;
  2. Preencher a tabela com os valores.

OK, este primeiro trecho do código é a parte responsável por pegar do servidor a hora correta. Quando o código pegar a hora exata do servidor, ele vai distribuir nas variáveis $mes e $ano.

Utilizei a função switch para poder colocar o nome do mês em português, no título da tabela (a parte em azul da tabela, imagem: calendario2.jpg).

Para podermos trabalhar com vetores e manipular tais informações utilizei a função mktime.

Usando o mktime eu vou poder saber em que dia da semana começa o mês, lógico também saberei a quantidade de dias que determinado mês possui.

Pronto, acredito que agora temos todas as informações úteis para que possamos começar a preencher nosso vetor usando um laço de repetição:

for($x=$inicio_mes;$x<=$fim_mes+($inicio_mes-1);$x++)
{
$vet[$x]=$vet[$x-1]+1;
}

Assim terei todos os dias do mês armazenados no vetor, começando pelo dia 1° e armazenando tal informação na célula correspondente ao primeiro dia da semana do determinando mês.

    Próxima página

Páginas do artigo
   1. Preparando o espaço para trabalhar
   2. Inserindo os dados na tabela
   3. Código completo
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

PHP Orientado a Objetos

A simples classe Date Operations

Funções da categoria Miscelânea do PHP

Debian com Apache, PHP4, PHP5 e MySQL

Solução open source para clínicas médicas

  
Comentários
[1] Comentário enviado por alexnuvix em 09/11/2007 - 09:54h

Muito Bom o artigo.

Como você deu a permissão gostária de usar em um portal Intranet que tenho aqui na empresa.
Teria como você disponibilizar as imagens ?

Se puder me envia por e -mail, se não puder ok, mas de qualquer forma valeu pelo artigo.

Abraço.

[2] Comentário enviado por engos em 09/11/2007 - 11:56h

Gostei da iniciativa.

Ainda tenho que parar e analisar com calma o código, mas sua idéia é bem interessante.

Recomendo colocar o script com imagens e tudo mais que for necessário na parte de scripts do VOL antes e depois quando for publicar já colocar o endereço do script.

Espero apenas que você tenha feito conforme as regras do W3C, principalmente no que diz respeito a separação dos arquivos de estilos, script, html etc.

Só o que não consegui visualizar ainda (nessa passagem rápida que fiz) foi a criação do script como uma classe para ser usada com os conceitos de orientação a objetos. Se não o fez, seria interessante migrar e já fazer os próximos assim.

Abraço.

[3] Comentário enviado por lsouzabr em 09/11/2007 - 16:53h

Bom, com relação as imagens, quando você acessa a versão para impressão elas irão aparecer, com relação ao w3c se não me engano falta uma correção com relação a forma como o bg foi declarado, mas isso é um ajuste muito simples.
Quando você for utilizar na forma de módulo, você precisa eliminar todo o código que não for relativo a tabela do calendário, por tanto, os heads, body, etc, precisam ser eliminados do html, ficando somente o <table> </table>.
Com relação ao conceito de orientação a objetos você realmente têm razão, porém é algo que pra te ser sincero eu preciso estudar mais pra criar algo do tipo.

Qualquer coisa, ou qualquer sugestão estamos ai!!!!
Falows, abração.

[4] Comentário enviado por fagnerfjas em 18/12/2009 - 15:57h

Era tudo o que eu precisava.
Ajudou e muito o meu trabalho!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts