Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal,
Tenho um tenho uma rotina para mudar os dias de agendamento, que funciona da seguinte forma:
No banco eu tenho
Data Dia
17/07/2013 Quarta
14/08/2013 Quarta
Mas digamos que precise modificar todos os agendamento de QUARTA para SEXTA, no meu caso o usuário tem que escolher o novo dia e clicar em OK. Aí o sistema terá que verificar as data do dia SEXTA o modificar automaticamente, assim:
19/07/2013 SEXTA
16/08/2013 SEXTA
E assim por diante até mudar todos os dias de quarta para sexta, verificando os dias, meses e anos se for o caso.
>
No caso, você está criando um evento para um determinado dia da semana, "Quarta" como exemplo
Este evento se propaga para todas as quartas-feira de um período.
Temos o mês de Julho de 2013 como exemplo.
Logo este evento cadastrado para o dia 03/07/2013 será propagado para os dias (10,17,24 e 31/07)
E mudando este evento de "Quarta" para "Sexta", você quer que ele se propague para todas as Sexta do período
que no caso sería (6,13,20 e 27/07)
Simples,
Eu faria o Banco de Dados assim:
Tabela evento:
id - integer
tipo_dia_semana - char(1) 1-7 == date('N')
data_inicial- date
data_final - date
descricao - text
id | tipo_dia_semana | data_inicial | data_final | descricao ...
1 1 2013-07-01 | 2013-07-31 | escrever no forum algum código
2 3 2013-07-01 | 2013-07-31 | escrever outro código
No PHP, vc pega o date('N' , mktime(0, 0, 0, 7, 1, 2013)) da data_inicial
Na hora de apresentar os eventos por dia, faz o select pelo tipo_dia_semana considerando o período
Editar pelo id, selecionar pelo tipo_dia_evento e período.
Boa sorte!
é mais ou menos isso, mas pesquisando achei o mktime e estou tentando fazer um algorítimo que verifique e o dia referente a data que está no banco é igual ao dia informado pelo usuário, se não for eu pulo um registro e faço nova verificação. Até substituir todos o registro que atendam a condição.
Vlw muito pelo ajuda.
Se você possuir PHP >= 5.3 utilize a biblioteca DateTime ao invés de mktime.
Com DateTime, você possui um interface completa para trabalhar com datas e horários.
Você pode ver alguns exemplos nos links abaixo:
http://forum.imasters.com.br/topic/486600-incrementando-data-usando-oo/
http://forum.imasters.com.br/topic/487944-validar-data-com-php/
http://forum.imasters.com.br/topic/487586-problema-na-soma-horas-minutos-segundos-php-e-mysql/
http://forum.imasters.com.br/topic/485534-diferea-entre-duas-datas-no-formato-6-dias-21h-3min/
http://forum.imasters.com.br/topic/483023-somar-minutos-a-hora/
Acho que são exemplos o suficiente para entender a biblioteca.
Qualquer dúvida, poste-a.
No caso, você está criando um evento para um determinado dia da semana, "Quarta" como exemplo
Este evento se propaga para todas as quartas-feira de um período.
Temos o mês de Julho de 2013 como exemplo.
Logo este evento cadastrado para o dia 03/07/2013 será propagado para os dias (10,17,24 e 31/07)
E mudando este evento de "Quarta" para "Sexta", você quer que ele se propague para todas as Sexta do período
que no caso sería (6,13,20 e 27/07)
Simples,
Eu faria o Banco de Dados assim:
Tabela evento:
id - integer
tipo_dia_semana - char(1) 1-7 == date('N')
data_inicial- date
data_final - date
descricao - text
id | tipo_dia_semana | data_inicial | data_final | descricao ...
1 1 2013-07-01 | 2013-07-31 | escrever no forum algum código
2 3 2013-07-01 | 2013-07-31 | escrever outro código
No PHP, vc pega o date('N' , mktime(0, 0, 0, 7, 1, 2013)) da data_inicial
Na hora de apresentar os eventos por dia, faz o select pelo tipo_dia_semana considerando o período
Editar pelo id, selecionar pelo tipo_dia_evento e período.
Boa sorte!