Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou fazendo um programa que trabalha com reservas de datas e mostra no calendário os dias que estão reservados.
Faço um loop para que o registro de cada dia seja inserido no bando de dados e depois eu pego essas datas e mostro no calendário.
Para isso eu comparo o DIA de entrada com o dia de saída, vejo quantos dias a pessoa vai ficar e incremento para o db.
Só que quando o dia de saída é menor que o dia da entrada, embora o mês seja maior, ele aparece com um número negativo e não consigo fazer o incremento.
$pre_reserva_in = $ano_entrada . "-" . $mes_entrada . "-" . $dia_entrada;
$pre_reserva_out = $ano_saida . "-" . $mes_saida . "-" . $dia_saida;
if($pre_reserva_in<$pre_reserva_out)
{
$quantidade_dias = ($dia_saida-$dia_entrada);
for($i=0; $i<=$quantidade_dias; $i++)
{
$pre_reserva_dias = $ano_entrada . "-" . $mes_entrada . "-" . $dia_entrada;
mysql_query("INSERT INTO tb_reservas (id, pre_reserva_in, pre_reserva_out)
VALUES ('', '$pre_reserva_dias', '$pre_reserva_out'")
or die("Não foi possível fazer o cadastro!");
$dia_entrada = ($dia_entrada+1);
}
}
Alguém sabe como posso resolver?
Obrigado a todos.
Valeu Beraldo,
Encontrei no php.net uma equação e adaptei para minha necessidade.
$ndays = (strtotime($pre_reserva_out) - strtotime($pre_reserva_in)) / (60 * 60 * 24);
$nextday = date('Y-m-d', mktime(0, 0, 0, date("m", strtotime($pre_reserva_in)) , date("d", strtotime($pre_reserva_in))+ $count, date("Y", strtotime($pre_reserva_in))));
$quant_dias = ($ndays+1);
echo $quant_dias
Só que continuo com um problema, quando a pessoa entra no final de um mês e sai no início do outro o db não recebe os dados como quero. Eles aparecem assim:
0000-00-00
Ou seja, se a pessoa entrar dia 2009-02-27 e sair dia 2009-03-01 o banco de dados, segundo o meu código está inserindo assim:
2009-02-27
2009-02-28
0000-00-00
0000-00-00
Acho que preciso colocar uma condicional no meu loop para que, se mudar o mês ele insira corretamente no db.
Alguém tem alguma dica?
$pre_reserva_out = '2009-03-03';
$pre_reserva_in = '2009-02-26';
$ndays = ((strtotime($pre_reserva_out) - strtotime($pre_reserva_in)) / (60 * 60 * 24)) + 1;
for ($i = 0; $i < $ndays; $i++)
{
echo $pre_reserva_in . '<br />';
$pre_reserva_in = date('Y-m-d', strtotime( $pre_reserva_in . '+ 1 Day') );
}Valeu Beraldo,
Era isso mesmo! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Obrigado e até mais. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
trabalhe com timestamp. Use strtotime antes de fazer as subtrações.