Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Villa

[Resolvido] Classe para gerar calendário...

Recommended Posts

Salve galera!

Estou montando um calendário completo para o site de uma imobiliária, mas não estou consigo fazer com que fique marcado o dia já reservado...

EXEMPLO:

-> de 15/09/2011 à 20/10/2011 (então os quadrados dentre estas datas devem estar de outra cor)

 

<?php 
class calendario{
// Array com os meses do ano... 
var $mes = array('1' => 'JANEIRO',
				 '2' => 'FEVEREIRO',
				 '3' => 'MARÇO',
				 '4' => 'ABRIL',
				 '5' => 'MAIO',
				 '6' => 'JUNHO',
				 '7' => 'JULHO',
				 '8' => 'AGOSTO',
				 '9' => 'SETEMBRO',
				'10' => 'OUTUBRO',
				'11' => 'NOVEMBRO',
				'12' => 'DEZEMBRO');

function gerar_calendario($dia, $mes, $ano){	
	// Corrige qualquer data invalida
	$verf = date("d/n/Y", mktime(0, 0, 0, $mes, $dia, $ano));
	$pieces = explode("/", $verf);
	$dia = $pieces[0];
	$mes = $pieces[1];
	$ano = $pieces[2];
	// Inteiro do ultimo dia do mês
	$last = date("d", mktime(0, 0, 0, $mes+1, 0, $ano));

	// Numero de dias na primeira semana do mês
	$diasem=date ("w", mktime(0, 0, 0, $mes, 1, $ano));

	//Total de linhas na tabela
	$numt = $last + $diasem;
	$numt = ($numt%7 != 0) ? ($numt+7-$numt%7) : $numt;
	for($i=0; $i<$numt; $i++){
		$data = $i - $diasem + 1;
		if($i>=$diasem and $i<($diasem+$last)){
			$d = $data;
			if($data==date('d') && $mes==date('m')){
				// Dia Atual
				$data = '<font color="#006600">'.$data.'</font>';
			}elseif($i%7 == 0){
				// Dias DOMINGO...
				$data = '<font color="#990000">'.$data.'</font>';
			}

			//aqui select para ver se contato tem algo no dia
			$aux[$i] = '<td class="calendario_dias" style="'.$style.'">'.$data.'</td>';
		}else{
			// Espaços vazios depois do último dia do mes
			$aux[$i] = '<td> </td>';
		}
		if($i%7 == 0){
			$aux[$i] = '<tr align="center">'.$aux[$i];
		}
		if($i%7 == 6){
			$aux[$i].='</tr>';
		}
	}
	echo '<table cellspacing="0" cellpadding="0" class="calendario_tabela" style="float:left; height:194px; margin:5px; width:142px;">
		<tr>
			<td>
				<table>
					<tr class="calendario_mes_ano">
						<td align="center" colspan="7">'.$this->mes[$mes].' '.$ano.'</td>
					</tr>
					<tr class="calendario_semana">
						<td align="center">D</td>
						<td align="center">S</td>
						<td align="center">T</td>
						<td align="center">Q</td>
						<td align="center">Q</td>
						<td align="center">S</td>
						<td align="center">S</td>
					</tr>';
		echo implode(" ",$aux);
		if(count($aux)==35){
			// Arruma a tabela se for pequena...
			echo '<tr><td align="center" colspan="7"> </td></tr>';
		}
		echo '</table>
			</td>
		</tr>
	</table>';
}
} 
//Exemplos
$calendario = new calendario;

echo '<table>';
for($i=1; $i<=12; $i++){
	echo '<tr>
		<td>'.$calendario->gerar_calendario(date("d"),$i,date("Y")).'</td>';
}
echo '</table>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa primeiramente saber usar as funções de data

olhando o código "por cima", tem um trecho que deveria validar a data.. está certo, deve fazer a validação, no entanto, o script não checa a validade da data..

 

outra falha grave é que não está verificando se é ano bissexto (fevereiro 28, 29)

 

 

 

http://php.net/date

http://php.net/checkdate

http://php.net/datetime

 

 

off

para essa finalidade aconselho a criar uma integração com javascript, pois o calendário é praticamente estático. Não tem necessidade de processá-lo a cada requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, Hinom!

Obrigado pelas dicas, acabei colocando o Jquery UI Datepicker...

Por enquanto está funcionando normalmente, só preciso integrar com o PHP.

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.