Ir para conteúdo

POWERED BY:

Arquivado

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

Fernando Nicacio

[Resolvido] Pegar todas datas entre duas delas...

Recommended Posts

Iae galera beleza, no titulo meio que expliquei oq preciso fazer...

 

Estou desenvolvendo um sistema de reserva e preciso pegar todas datas entre um determinado tempo vindo de um formulario.

 

Exemplo:

quero reservar do dia 07/10/2010 > $_POST('entrada') ao dia 10/10/2010 > $_POST('entrada') ai teria que exibir as datas entre essas duas datas que no caso seria,

07/10/2010

08/10/2010

09/10/2010

10/10/2010

pra min poder inserir no banco e da como reservado esse dias....

se alguem puder me ajudar ficarei mt grato!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No PHP existe a classe padrão DateTime.

 

Com estes objetos, você pode adicionar, subtrair e converter datas

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://www.php.net/manual/en/datetime.add.php

 

A idéia é: transforme a data num objeto DateTime:

$date = new DateTime($_POST['entrada']);

Use o método add:

$new_date = $date->add('P1D');

Agora use a cabeça um pouquinho:

Crie objetos DateTime para as duas datas, faça um loop do tipo:

 

enquanto data < data_final faça
	mostre a data;
	incremente a data em 1 dia;

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso ali funcionaria se as datas fossem de meses diferentes... no caso entrada 25/10/2010 e saida 05/11/2010 esse loop ali ja nao ia resolver, estou certo?

Obrigado pela atenção!!!

 

Edit--------

agora acho que entendi ali, no caso ele vai compara a data inteira, é pq antes eu comparava parte por parte ai nao dava muito certo... vo testa aqui pra ve se funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André D. Molin

Resolveu minha vida cara, valeu mesmo funciono direitinho... ajudo mt!!!

 

@Rick.hjpbarcelos

Vlw pela ajuda tbm...

Brigadão ai pros dois pela atenção!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera agora o problema é o seguinte,

fiz oq o André D. Molin indico ali encima e deu tudo certo em localhost mass quando mandei pro servidor e fui testa ele so exibe a primeira data e mostra um erro.

 

Fatal error: Call to undefined method DateTime::add() in /home....

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Kineri esse post ai que falo, funciono direitinho... mas tem um porem como eu fasso para inserir essas datas no banco?

no caso tenho que faze um INSERT repetir a cada data...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguindo aquela linha de raciocínio, da pra pegar a variável $datas (array final com as datas) e "colar" ela com o implode pra passar como vários valores numa mesma query sql.

 

A query funcionaria assim:

INSERT INTO tabela (data) VALUES ("data1"),("data2")
Nessa linha, junte a variável formando a string:

mysql_query('INSERTO INTO tabela (data) VALUES ('.implode("),(",$datas)).');');
Sei que a string ficou confusa.

 

O argumento "),(" é a "cola" dos elementos fazendo a array sair assim:

"data1),(data2),(data3"
Então é só concatenar o primeiro e o último parêntese pra fechar a fórmula certinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questao é que preciso inserir essas datas com id separados...

DataInicio = 10/10/2010

DataFinal = 15/10/2010

 

Resultado:

10/10/2010 --> Id: 1

11/10/2010 --> Id: 2

12/10/2010 --> Id: 3

13/10/2010 --> Id: 4

14/10/2010 --> Id: 5

15/10/2010 --> Id: 6

 

e do jeito que falo ali, ele vai repetir as datas e nao a query inteira...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os IDs serão sempre automáticos?

 

Se criar um campo AUTO_INCREMENT na tabela, e usar a mesma query, ela acrescenta as IDs sozinha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim ve se me intendes...

 

tenho as seis datas ja, a de entrada, a de sainda, e as outras entre elas.

preciso inserir cada uma no banco ja com id auto_increment. so que do jeito que você falo ali

 

mysql_query('INSERTO INTO tabela (data) VALUES ('.implode("),(",$datas)).');');

ele vai inserir assim:

mysql_query('INSERTO INTO tabela (data) VALUES ('10/10/2010,11/10/2010,12/10/2010...');

Eu preciso que repita todo o insert pq minha query é assim:

 

mysql_query("INSERT INTO agenda(data,imovel) VALUES(' AS DATAS ','$_POST[imovel]')");

//-- Resultado:
/* 10/10/2010 --> Id-1: */ mysql_query("INSERT INTO agenda(data,imovel) VALUES(' 10/10/2010 ','$_POST[imovel]')");
/* 11/10/2010 --> Id-2: */ mysql_query("INSERT INTO agenda(data,imovel) VALUES(' 11/10/2010 ','$_POST[imovel]')");
/* 12/10/2010 --> Id-3: */ mysql_query("INSERT INTO agenda(data,imovel) VALUES(' 12/10/2010 ','$_POST[imovel]')");
/* 13/10/2010 --> Id-4: */ mysql_query("INSERT INTO agenda(data,imovel) VALUES(' 13/10/2010 ','$_POST[imovel]')");
/* 14/10/2010 --> Id-5: */ mysql_query("INSERT INTO agenda(data,imovel) VALUES(' 14/10/2010 ','$_POST[imovel]')");
/* 15/10/2010 --> Id-6: */ mysql_query("INSERT INTO agenda(data,imovel) VALUES(' 15/10/2010 ','$_POST[imovel]')");

//-------------

PS: no caso ja concegui chega +/- ate onde quero utilizando um for() so que so exibe ate a 5° data que no caso ali é o penultimo dia, to achando jeito agora de adicionar mais um dia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa variável imovel é constante?

 

Se for, use o foreach:

foreach($datas as $data){
  mysql_query("INSERT INTO agenda(data,imovel) VALUES(".$data.",".$_POST["imovel"].")");
}

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.