Mapa de Ferias

Olá boa Noite
Estou a precisa de construir um mapa de ferias alguém conhece um projecto tipo este feito em php


Captura de ecra de 2015-03-24 23:04:31.png

Segue a solução:

http://ojrconsultoria.com.br/sc/grid_calendario_teste/grid_calendario_teste.php

Me mande um e-mail para conversarmos sobre a aplicação:
rodrigo@ojrconsultoria.com.br

O meu email é jpinto@scantec.pt

link para acesso
http://ojrconsultoria.com.br/sc/grid_calendario_teste/grid_calendario_teste.php

Interessante Rodrigo, só não entendi bem a lógica do calendário, podes explicar? Abraço.

Bom na verdade só fiz igual ao exemplo passado pelo jpinto.
Foi bem complicado.

Junto envio o código para quem tiver esta necessidade ainda tem que ser feito alguns ajustes foi utilizado o código do para talianderson.web@gmail.com

http://scriptcase.scantec.pt:82/v8/app/ServiceWEBXX/MapaFerias/

?>

Mapa de ferias 2015

Calendário #tbl_calendar table{ display: table; } #tbl_calendar td{ text-align: center; background-color: #FFFFFF; vertical-align: center; width: 10px; height: 10px; } #tbl_calendar td.mes { text-align: center; background-color: #BDBDBD; /*vertical-align: center;*/ width: 10px; height: 5px; } #tbl_calendar td.dia { text-align: center; background-color: #BDBDBD; /*vertical-align: center;*/ width: 10px; height: 5px; } #tbl_calendar td.diames { text-align: center; background-color: #FFFFFF; /*vertical-align: center;*/ width: 10px; height: 10px; } #tbl_calendar td.fds { text-align: center; background-color: #00BFFF; /*vertical-align: center;*/ width: 10px; height: 10px; } #dia_atual { background-color: green; }
</style>
<?php /* Código escrito por Talianderson Dias em caso de dúvidas, mande um email para talianderson.web@gmail.com */ date_default_timezone_set('Europe/Lisbon'); function MostreSemanas($ano) { $semanas = "DSTQQSSDSTQQSSDSTQQSSDSTQQSSDSTQQSSDSTQQSS"; $dias = getMaxWeekDays($ano) + 31; for ($i=0; $i < $dias; $i++) { if ($i === 0 || $i === 6|| $i === 7|| $i === 13|| $i === 14|| $i === 20|| $i === 21|| $i === 27|| $i === 28|| $i === 34|| $i === 35) { echo ""; } else { echo ""; } echo $semanas{$i} . ""; } // for ($j=0; $j < 6; $j++) { // for ($i = 0; $i < 7; $i++) { // echo "" . $semanas{$i} . ""; // } // } } function getMaxWeekDays($ano) { $diasemana = 0; $meses = array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); foreach ($meses as $mes) { $dia = jddayofweek(cal_to_jd(CAL_GREGORIAN, $mes, "01", $ano), 0); $diasemana = $dia>$diasemana?$dia:$diasemana; } return $diasemana; } function GetNumeroDias($ano, $mes) { $numero_dias = array( '01' => 31, '02' => 28, '03' => 31, '04' => 30, '05' => 31, '06' => 30, '07' => 31, '08' => 31, '09' => 30, '10' => 31, '11' => 30, '12' => 31 ); if ((($ano % 4) == 0 and ($ano % 100) != 0) or ($ano % 400) == 0) { $numero_dias['02'] = 29; // altera o numero de dias de fevereiro se o ano for bissexto } return $numero_dias[$mes]; } function GetNomeMes($mes) { $meses = array( '01' => "Janeiro", '02' => "Fevereiro", '03' => "Março", '04' => "Abril", '05' => "Maio", '06' => "Junho", '07' => "Julho", '08' => "Agosto", '09' => "Setembro", '10' => "Outubro", '11' => "Novembro", '12' => "Dezembro" ); if ($mes >= 01 && $mes <= 12) { return $meses[$mes]; } return "Mês deconhecido"; } function MostreCalendario($ano, $mes) { $numero_dias = GetNumeroDias($ano,$mes); // retorna o número de dias que tem o mês desejado $nome_mes = GetNomeMes($mes); $diacorrente = 0; $diasemana = jddayofweek(cal_to_jd(CAL_GREGORIAN, $mes, "01", $ano), 0); // função que descobre o dia da semana // echo ""; // echo ""; // echo ""; // echo ""; // echo ""; // MostreSemanas(); // função que mostra as semanas aqui // echo ""; // echo ""; echo ""; if ($diasemana > 0) { for ($i=0; $i < $diasemana; $i++) { if ($i === 0) { echo ""; }else { echo ""; } } } for ($i=0; $i < $numero_dias; $i++) { echo "".++$diacorrente.""; } $max = getMaxWeekDays($ano)+31; for ($i=$numero_dias+$diasemana; $i < $max; $i++) { if ($i == 34 || $i == 35) { echo ""; } else { echo ""; } } // for ($linha = 0; $linha < 6; $linha++) { // echo ""; // for ($coluna = 0; $coluna < 7; $coluna++) { // echo ""; // } // echo ""; // } // echo "

" . $nome_mes . "

 
 
$nome_mes    
'; // TRECHO IMPORTANTE: A PARTIR DESTE TRECHO É MOSTRADO UM DIA DO CALENDÁRIO (MUITA ATENÇÃO NA HORA DA MANUTENÇÃO) // if ($diacorrente + 1 <= $numero_dias) { // if ($coluna < $diasemana && $linha == 0) { // echo " "; // } else { // // echo ""; // echo "" . ++$diacorrente . ""; // } // } else { // break; // } // /* FIM DO TRECHO MUITO IMPORTANTE */ // echo "
"; } function MostreCalendarioCompleto($ano) { echo ''; echo ""; MostreSemanas($ano); // função que mostra as semanas aqui echo ""; MostreCalendario($ano,'01'); MostreCalendario($ano,'02'); MostreCalendario($ano,'03'); MostreCalendario($ano,'04'); MostreCalendario($ano,'05'); MostreCalendario($ano,'06'); MostreCalendario($ano,'07'); MostreCalendario($ano,'08'); MostreCalendario($ano,'09'); MostreCalendario($ano,'10'); MostreCalendario($ano,'11'); MostreCalendario($ano,'12'); // $cont = 1; // for ($j = 0; $j < 4; $j++) { // echo ""; // for ($i = 0; $i < 3; $i++) { // echo ""; // } // echo ""; // } echo "
 
"; // MostreCalendario(($cont < 10) ? "0" . $cont : $cont); // $cont++; // echo "
"; } // echo ""; // MostreCalendario('01'); // MostreCalendario('02'); // MostreCalendario('03'); // MostreCalendario('04'); // MostreCalendario('05'); // MostreCalendario('06'); // MostreCalendario('07'); // MostreCalendario('08'); // MostreCalendario('09'); // MostreCalendario('10'); // MostreCalendario('11'); // MostreCalendario('12'); // echo "
"; MostreCalendarioCompleto(2015); //MostreCalendarioCompleto([IDAno]); ?> <?php

Ola Amigos do forum,
estou precisando de uma solução semelhante a esta criada por jpinto e ojrconsultoria, mas a minha necessidade e para compor um quadro de reservas (sistema de hotel), mostrando os apartamentos X dias e o status de cada um ( liberado, Ocupado, Reservado), segue imagem do que eu gostaria
www.clickinformatica.net.br/MODELO_MAPA_HOSPEDAGEM.jpg

Grato
Paulo

Também existe esta possibilidade de calendario

http://scriptcase.scantec.pt/v8/app/ServiceWEBXX/calendar/

Demo

http://jquerylabs.com/wdcalendar-jquery-plugin-html/

Ola Jpinto,
Mas com calendar, não posso colocar a lista dos apartamentos…

Agradeço a sugestão

Eu penso que seja possivel basta criar um filtro no sql onde estão guardados o estado dos quarto tipo Livre / ocupado, por exemplo se tenho 30 dos quais 28 estão ocupado eu posso apresentar 2 tipos de resultados dois quarto Livre ou 28 quartos ocupados isto em cada dia do calendario.
Depois posso criar consulta para ir mais o detalhe da informação.