Ir para conteúdo

POWERED BY:

Arquivado

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

biza

Pesquisa entre duas datas

Recommended Posts

O problema de um mal modelo é que le demanda soluções complexas para problemas simples , sinceramente não sei como resolver , talvez transformar as colunas em linha por um UNION

select inicioa , fima
from tabela
union all
select iniciob , fimb
from tabela
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mota consegui fazer o que queria , e trazer os valores com um array associativo agora estou com um problema de modelação de dados caso você me consiga dar uma ajuda fico-lhe muito grato, agora estou com dificuldade em verificar a de dias de cada uma das épocas que calha em cada uma das situações isso agora esta desta forma:

<?
$entryDate = $_GET['source1'];
$exitDate = $_GET['source2']; 

 $result2 = mysql_query("SELECT tbl_produto.id_produto, tbl_epocas.epoca_initA, tbl_epocas.epoca_endA, tbl_epocas.epoca_initB, tbl_epocas.epoca_endB,tbl_epocas.epoca_initC, tbl_epocas.epoca_endC, 
 tbl_epoca_preco.id_epoca_preco, tbl_epoca_preco.alojamento,tbl_epoca_preco.qnt_tipo,tbl_epoca_preco.adulto,tbl_epoca_preco.crianca, tbl_epoca_preco.preco_1,tbl_epoca_preco.preco_2,tbl_epoca_preco.preco_3 FROM tbl_produto INNER JOIN tbl_epocas INNER JOIN tbl_epoca_preco WHERE tbl_produto.id_produto = tbl_epocas.produto_id AND tbl_produto.id_produto = tbl_epoca_preco.produto_id AND tbl_produto.id_produto =".$_GET['id']." ORDER BY alojamento ASC");

$rooms = array();
 while( $row2 = mysql_fetch_array($result2)){
	 
	 $id_alojamento = $row2['alojamento'];
	 $rooms[] = $id_alojamento;
	 $rooms[ $id_alojamento ] = array('A','B','C');
	 	 
	 $rooms[ $id_alojamento ]['A'][] = $row2['epoca_initA'];
	 $rooms[ $id_alojamento ]['A'][] = $row2['epoca_endA'];
	 $rooms[ $id_alojamento ]['A'][] = $row2['preco_1'];
	 $rooms[ $id_alojamento ]['A'][] = 0;//numDays
	 
	 $rooms[ $id_alojamento ]['B'][] = $row2['epoca_initB'];
	 $rooms[ $id_alojamento ]['B'][] = $row2['epoca_endB'];
	 $rooms[ $id_alojamento ]['B'][] = $row2['preco_2'];
	 $rooms[ $id_alojamento ]['B'][] = 0;//numDays
	 
	 $rooms[ $id_alojamento ]['C'][] = $row2['epoca_initC'];
	 $rooms[ $id_alojamento ]['C'][] = $row2['epoca_endC'];
	 $rooms[ $id_alojamento ]['C'][] = $row2['preco_3'];
	 $rooms[ $id_alojamento ]['C'][] = 0;//numDays
 }
 
 //en = entryDate = data de entrada do quarto
 //ex = exitDate = data de saida do quarto
 //endDate = fim da epoca
 //startDate = inicio da epoca
 //
 //1º |_________________|___en____ex___|______________|  startDate < en < endDate && startDate < ex < endDate : numDays = ex - end
 //2º |_________________|___en_________|_____ex_______|  startDate < en < endDate && ex > endDate : numDays = endData - en
 //3º |____________en___|_________ex___|______________|  en < startDate && startDate < ex < endDate : numDays = ex - startDate
 //4º |____________en___|______________|_____ex_______|  en < endDate && ex > endDate : numDays = endDate . startDate
	
 
 foreach($rooms as $key_alojamento => $epocas){
	 
	 foreach($epocas as $epoca){
		 echo $epoca[2]. '</br>';
		  echo $exitDate;
		 
		if($epoca[0] < $entryDate && $epoca[0] < $exitDate){
		
		 //exit += 
		 
		
		}else if($epoca[0] < $entryDate && $exitDate > $epoca[1]){
		 //exit += 
	
		}else if($entryDate < $epoca[0] && $epoca[0] < $exitDate){
		 //exit += 
		
		
		}else if($exitDate < $epoca[1] && $exitDate > $epoca[1]){
		 //exit += 
		 
		
		}
	 }
 }
 
 ?>

Obrigado por sua ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repito, seu problema é de modelo.

 

Mas eu tentaria fazer a query com unions para resolver isto. (#21)

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.