Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fsphp

[Resolvido] Comparando DIAS

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$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') );

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.