Ir para conteúdo

POWERED BY:

Arquivado

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

Br3n0k

Inserindo varios registros de acrodo com a diferença em dias entre dua

Recommended Posts

Galerinha, estou com uma duvida cruel, estive pensando em trabalhar com um calendario, a pessoa faz um agendamento porem esse agendamento pode durar alguns dias então ela marca a data inicial e a final, e no calendario irá aparecer em todos os dias que ela marcou.

 

estive pensando em fazer 1 insert para cada dia: porem sou leigo no PHP principalmente quando o assunto são datas, podem me ajudar?

 

vi no blog do Thiagomatos:

  • //Star date
  • $dateStart = '20/04/2013';
  • $dateStart = implode('-', array_reverse(explode('/', substr($dateStart, 0, 10)))).substr($dateStart, 10);
  • $dateStart = new DateTime($dateStart);

  • //End date
  • $dateEnd = '25/04/2013';
  • $dateEnd = implode('-', array_reverse(explode('/', substr($dateEnd, 0, 10)))).substr($dateEnd, 10);
  • $dateEnd = new DateTime($dateEnd);

  • //Prints days according to the interval
  • $dateRange = array();
  • while($dateStart <= $dateEnd){
  • $dateRange[] = $dateStart->format('Y-m-d');
  • $dateStart = $dateStart->modify('+1day');
  • }

  • var_dump($dateRange);

porem como eu pegaria as datas e transformaria isso nos inserts? desculpe desde já e que realmente não sou programador, apenas um curioso =D

 

 

alguem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A $dateRange é um array com as datas desejada. Então, só fazer um foreach listando estes valores.

foreach($dateRange as $valor){
	$inserir = "INSERT INTO tabela (campo1, data) VALUES ('Valor inserido', '$valor')";
	echo $inserir . '<br />';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

A $dateRange é um array com as datas desejada. Então, só fazer um foreach listando estes valores.

foreach($dateRange as $valor){
	$inserir = "INSERT INTO tabela (campo1, data) VALUES ('Valor inserido', '$valor')";
	echo $inserir . '<br />';
}

 

Allex, entendi o que quis dizer, e se por um acaso eu quisesse colcoar um agendamento que durasse 3 dias, no primeiro dia no final ia estar 1/3,2/3,3/3... identificar que a data nesse intervalo indica o primeiro, segundo, terceiro dia, h[a alguma forma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de ser um intervalo de datas, você deve identificar a relação entre elas. Pensando em um breve momento, há duas formas que eu sugeriria.

 

 

1 - Utilizando duas tebal. Uma tabela chamada "agendamento" e outra com as datas de agendamento (data_agendamento). Dessa forma, é apenas um agendamento que pode possuir 1:N dias, ou seja (um ou mais de um).

 

2 - Utilize apenas uma tabela, "agendamento". Cada registro na tabela agendamento refere-se a um dia de agendamento, entretanto, faça referência cruzada entre os registros, como um Doubly Linked List. Dessa você pode avançar e retroceder através da lista. Neste link existe uma implementação da SplDoublyLinkedList.

 

De qualquer forma, eu utilizaria a primeira forma, é mais rápida de implementar, utilizar e avançar através das datas.

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.