Ir para conteúdo
Fórum Script Brasil
  • 0

Lógica para desenvolvimento de aplicação


lha2

Pergunta

Olá amigos, boa tarde.

Estou tentando desenhar uma lógica para implantar um sistema que visualiza disponibilidade de apartamentos com reservas de locação de temporada, minha tabela tem 4 campos, id, id_apto, data_inicio, data_fim e queria mostrar em um calendário quais dias que os aptos estarão ocupados, porém não consegui nada tentei fazer por consulta SQL via cláusula BETWEEN e nada, alguém poderia me ajudar numa lógica simples, pois pensar é fácil, mas implantar em código está complicado para mim.

Até agora o que consegui é o que está abaixo e agora não apresenta mais nada no calendário, só da - nos dias.

<?
if ($dados[tipo] == "Locação Temporária") {
?>
                                                        <tr>
                                                                <td style="border-bottom: 1 solid #000000">
                                                                <p class="subtitulo">Disponibilidade do imóvel</td>
                                                        </tr>
                                                        <tr>
                                                                <td>

<?
//Funções
function UltimoDia($ano,$mes){ 
   if (((fmod($ano,4)==0) and (fmod($ano,100)!=0)) or (fmod($ano,400)==0)) { 
       $dias_fevereiro = 29; 
   } else { 
       $dias_fevereiro = 28; 
   } 
   switch($mes) { 
       case 01: return 31; break; 
       case 02: return $dias_fevereiro; break; 
       case 03: return 31; break; 
       case 04: return 30; break; 
       case 05: return 31; break; 
       case 06: return 30; break; 
       case 07: return 31; break; 
       case 08: return 31; break; 
       case 09: return 30; break; 
       case 10: return 31; break; 
       case 11: return 30; break; 
       case 12: return 31; break; 
   } 
}
// Fim funções


// Variáveis
$ano = date("Y");
$cont = 0;
$dia = date("d");
$dias = array();
$mes = date("m");
$totalDias = date("t");
$primeiroDia = date("D", mktime(0, 0, 0, $mes, 1, $ano));
$diaprimeiro = "01";
$diafinal = UltimoDia($ano,$mes);
$data_inicio = $ano."-".$mes."-".$diaprimeiro;
$data_fim = $ano."-".$mes."-".$diafinal;
$dias_reservas = array();
// Fim Variáveis

for($d = 0; $d < $totalDias; $d++)$dias[$d] = array_push($dias, $d+1);
$sql1 = mysql_query("SELECT * FROM reservas WHERE data_inicio BETWEEN '$data_inicio' AND '$data_fim' AND id_imovel = '$imovel'");
while($reserva = mysql_fetch_array($sql1, MYSQL_ASSOC)) {

//defino data 1
$ano1 = substr($reserva[data_inicio],0,4);
$mes1 = substr($reserva[data_inicio],5,2);
$dia1 = substr($reserva[data_inicio],7,2);

//defino data 2
$ano2 = substr($reserva[data_fim],0,4);
$mes2 = substr($reserva[data_fim],5,2);
$dia2 = substr($reserva[data_fim],7,2);

//calculo timestamp das duas datas
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);

//diminuo a uma data a outra
$segundos_diferenca = $timestamp1 - $timestamp2;

//converto segundos em dias
$dias_diferenca = $segundos_diferenca / (60 * 60 * 24);

//obtenho o valor absoluto dos dias (tiro o possível sinal negativo)
$dias_diferenca = abs($dias_diferenca);

//tiro os decimais aos dias de diferenca
$dias_diferenca = floor($dias_diferenca);

for($t = 0; $t < $dias_diferenca; $t++)$dias_reservas[$t] = array_push($dias_reservas, $t+1);

}

print_r($dias_reservas);

switch($primeiroDia){
        case "Sun":
                $pos = 0;
        break;

        case "Mon":
                $pos = 1;
        break;

        case "Tue":
                $pos = 2;
        break;

        case "Wed":
                $pos = 3;
        break;

        case "Thu":
                $pos = 4;
        break;

        case "Fri":
                $pos = 5;
        break;

        case "Sat":
                $pos = 6;
        break;
}//Fim do switch

switch($mes){
        case 1:
                $mes2 = "Janeiro";
        break;

        case 2:
                $mes2 = "Fevereiro";
        break;

        case 3:
                $mes2 = "Março";
        break;

        case 4:
                $mes2 = "Abril";
        break;

        case 5:
                $mes2 = "Maio";
        break;

        case 6:
                $mes2 = "Junho";
        break;

        case 7:
                $mes2 = "Julho";
        break;

        case 8:
                $mes2 = "Agosto";
        break;

        case 9:
                $mes2 = "Setembro";
        break;

        case 10:
                $mes2 = "Outubro";
        break;

        case 11:
                $mes2 = "Novembro";
        break;

        case 12:
                $mes2 = "Dezembro";
        break;
}//Fim do switch

echo "<table align='center' border=1 cellspacing=0 cellpadding=0>";
echo "<tr><td bgColor='cyan' colspan=7><center><b>$mes2/$ano</b></center></td></tr>";
echo "<tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr>";

for($linha = 0; $linha < 6; $linha++){
        echo "<tr>";
        for($coluna = 0; $coluna < 7; $coluna++){
                $pos2 = $cont - $pos;

                if(empty($dias[$pos2]))echo "<td><center>-</center></td>";
                else{

for($z = 0; $z < sizeof($dias_reservas); $z++){

if ($dias[$pos2] == $dias_reservas[$z]) {
echo "<td bgColor='darkgray'><b><center><font color='blue'>".$dias[$pos2]."</font></center></b></td>";
} else {
echo "<td><center>".$dias[$pos2]."</center></td>";
}

}


                }//Fim do else

                $cont++;
        }//Fim do for
        echo "</tr>";
}//Fim do for

echo "</table>";
?>

                                                                </td>
                                                        </tr>
<?
}
?>

Será que alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Para esse pedaço específco eu usaria um array:

switch($mes){
        case 1:
                $mes2 = "Janeiro";
        break;

        case 2:
                $mes2 = "Fevereiro";
        break;

        case 3:
                $mes2 = "Março";
        break;

        case 4:
                $mes2 = "Abril";
        break;

        case 5:
                $mes2 = "Maio";
        break;

        case 6:
                $mes2 = "Junho";
        break;

        case 7:
                $mes2 = "Julho";
        break;

        case 8:
                $mes2 = "Agosto";
        break;

        case 9:
                $mes2 = "Setembro";
        break;

        case 10:
                $mes2 = "Outubro";
        break;

        case 11:
                $mes2 = "Novembro";
        break;

        case 12:
                $mes2 = "Dezembro";
        break;
tente assim:
$meses=explode(',','0,janeiro,fevereiro,marco,abril,etc');
$mes2=$meses[$mes];

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...