Ir para conteúdo

POWERED BY:

Arquivado

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

Luciano Rodrigues

Intervalo entre datas

Recommended Posts

Olá, estou fazendo meu projeto final da faculdade e estou com o seguinte problema.

 

Estou desenvolvendo o site de uma pousada com reserva online. O cliente entra com a data de entrada e a data de saida

 

Como faço para pegar essas datas, que já estao salvas no banco (mysql), e ter o intervalo entre elas

 

por exemplo

data de entrada: 18/03/2008

data de saida: 21/03/2008

 

alguma coisa que me retorne os dias, 19/03/2008 e 20/03/2008.

 

Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... com o BETWEEN você vai conseguir verificar se uma determinada data está contida entre outras duas.

 

Se você quer ter o número de dias entre 2 datas, use a seguinte função:

CODE
<?php

 

function dateDiff($from,$to)

{

$diff = $to - $from;

$info = array();

if($diff>86400)

{

//um ou mais dias

$info['d'] = ($diff - ($diff%86400))/86400;

$diff = $diff%86400;

}

 

if($diff>3600)

{

//uma ou mais horas

$info['h'] = ($diff - ($diff%3600))/3600;

$diff = $diff%3600;

}

 

if($diff>60)

{

//um ou mais minutos

$info['m'] = ($diff - ($diff%60))/60;

$diff = $diff%60;

}

 

if($diff>0)

{

$info['s'] = $diff;

}

 

$f = '';

 

foreach($info as $k=>$v)

{

//if($v>0) $f .= "$v $k, ";

if($v>0) $f .= "$v";

}

 

//return substr($f,0,-2);

return ($f == 24) ? "1" : $f;

 

}

 

//Forma de usar

$DataInicial = "2008-03-20";

$DataFinal = "2008-03-22";

 

echo dateDiff(strtotime($DataInicial),strtotime($DataFinal));

 

?>

eu peguei essa função na internet:

http://www.jellyandcustard.com/2007/08/07/...-between-dates/

 

e adaptei pra sua necessidade.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou testar e falo.. MAS MUITO OBRIGADO, DESDE JÁ!

 

Cara, os dias entre as datas eu já consegui..

 

esse where eu faço assim?

 

 

SELECT * FROM TBquarto01 BETWEEN data_entrada AND data_saida;

 

 

isso?

 

Cara, os dias entre as datas eu já consegui..

 

esse where eu faço assim?

 

 

SELECT * FROM TBquarto01 BETWEEN data_entrada AND data_saida;

 

 

isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso

cria dois campos text entrada e saida e os resgata...

 

SELECT * FROM TBquarto01 BETWEEN $data_entrada AND $data_saida;

 

 

não se esuqeça de colocar '$' nas variáveis...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha meu codigo

<?php

$db = mysql_connect("localhost", "root","");

 

mysql_select_db("pousada",$db);

 

 

$data_entrada = $_POST['data_entrada'];

$data_saida = $_POST['data_saida'];

 

$busca = mysql_query("SELECT * FROM TBquarto01 BETWEEN $data_entrada AND $data_saida",$db);

 

 

if ($busca == $data_entrada){

 

?>

<script type="text/javascript">

alert("O quarto está reservado na data selecionada, veja outro quarto ou confira as datas disponiveis no mesmo quarto")

location.href="../rese01.php"

</script>

<?php

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum..

 

se quer mostrá-los:

 

$entrada=$_POST['entrada'];

$saida=$_POST['saida'];

DICA: USE mysql_num_rows para verificar se exite alguma registro no bd equivalente a consulta

 

exemplo:

echo "Reservas entre $entada e $saida";

faz consulta....

$sql=mysql_query("SELECT * FROM TBquarto01 BETWEEN $entrada AND $saida");

$row=mysql_num_rows($sql);

if($row!="0"){

echo "NÃO HÁ VAGAS DISPONÍVEIS NESTE PERÍODO";

}

else{

echo "EXISTE $row reserva(s) disponível(is)";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta dando esse erro

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\EasyPHP 2.0b1\www\reservas\arquivos\dupli_data.php on line 14

 

onde você faz

 

$row = mysql_num_rows($sql);

Compartilhar este post


Link para o post
Compartilhar em outros sites

acrescente or die(mysql_error()); no select

 

verifique o nome das variáveis...

veja ue mudei o nome delas....!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o código

 

$data_entrada = $_POST['data_entrada'];

$data_saida = $_POST['data_saida'];

 

$sql = mysql_query("SELECT * FROM $tabela BETWEEN $data_entrada AND $data_saida" or die(mysql_error()));

$row = mysql_num_rows($sql);

if($row!="0"){

echo "NÃO HÁ VAGAS DISPONÍVEIS NESTE PERÍODO";

}

else{

echo "EXISTE $row reserva(s) disponível(is)";

}

 

e o erro continua o mesmo

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\EasyPHP 2.0b1\www\reservas\arquivos\dupli_data.php on line 14

 

na linha do $row = mysql_num_rows($sql);

Compartilhar este post


Link para o post
Compartilhar em outros sites

não assim não:

 

 

$sql=("SELECT") or die(mysql_error());

 

é para ver qual é o erro!

Compartilhar este post


Link para o post
Compartilhar em outros sites

está faltando sintaxe

 

escreva a cláusula "where" + o nome do campo que deseja pesquisar

 

 

escopo

select [fields] from 
 [table]
WHERE
 [field]
BETWEEN  'yyyy-mm-dd hh:ii:ss' and 'yyyy-mm-dd hh:ii:ss'

 

exemplo

select * from 
nomes 
WHERE
data
BETWEEN  '2008-03-12 10:00:00' and '2008-03-12 15:00:00'

Compartilhar este post


Link para o post
Compartilhar em outros sites

como o post acima exploda a data quem do post ou do bd(TANTO FAZ)

 

veja a função explode() no manual php

 

no bd vai como padrão Y-m-d(se você estiver usando o campo date no bd)

 

dica: antes de postar analise seu codigo para descobrir os erros....!

 

abraço..

 

aqui niniguém te dá muita dica, rsrs

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.