Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>';
}
}$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>';Boa tarde, Hinom!
Obrigado pelas dicas, acabei colocando o Jquery UI Datepicker...
Por enquanto está funcionando normalmente, só preciso integrar com o PHP.
Valew
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.