fsphp 0 Denunciar post Postado Fevereiro 24, 2009 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
Beraldo 864 Denunciar post Postado Fevereiro 24, 2009 trabalhe com timestamp. Use strtotime antes de fazer as subtrações. Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Fevereiro 24, 2009 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
Beraldo 864 Denunciar post Postado Fevereiro 24, 2009 $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
fsphp 0 Denunciar post Postado Fevereiro 24, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites