Jump to content
Fórum Script Brasil
  • 0

Lógica para desenvolvimento de aplicação


lha2

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...