Duvida em data em formulario php para base de dados SQL

jonilive

Power Member
Estou com um pequeno problema em criar um formulario que crie uma nova linha na tabela SQL, mas numa das colunas queria a data em que foi criada e outra coluna com a data criada + 30 dias, se me poderem ajudar. :) Agradeço.
 
Para fazer isso, é primeiro necessário ter o cuidado de verificar se há mudança de mês. De qualquer forma, isso pode ser feito criando uma função que verifica o dia atual e separa e depois junta os campos da data, através da conjugação das funções substr() e mktime(). Depois basta adicionar 30 usando a função DateTime::add. Aconselho também a leitura do manual do PHP, pois tem lá a explicação de como usar as funções.
 
No MySQL tens funções que adicionam dias à data sem teres que te preocupar com o mês, isto é, muda o mês caso necessário. No PHP penso que também existe, agora não sei de cor!

Agora outra questão:

Tens mesmo que ter na tabela a data e a data + 30? É que isso não é muito correcto. Estás a ocupar espaço na BD com um dado que sabes que é sempre igual ao outro mais 30 dias e pode muito bem ser calculado sempre que necessário. Talvez o correcto seria, quando fores buscar os dados fazeres do género:

-> SELECT id_Linha, nome, data, ADDDATE(data, INTERVAL 30 DAY) as `data30`

e vais obter tanto a data como a data+30 em colunas separadas

ex:

Código:
id_linha|| nome                           || data       || data30    
2342    || Evaristo Mantumbino dos Santos || 2012-06-22 || 2012-07-22




P.S. - Poderá haver algum erro de sintaxe no SQL que coloquei!

Manupilação de datas em MySQL -> http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
 
Última edição:
Sim eu necessito da data mais 30 dias porque o que eu quero fazer é por exemplo um formulario para inserir o nome da pessoa, e automaticamente coloca o nome da pessoa e a data em que preencheu o formulario mais outra data com os +30 dias, na bd mysql. A data dos mais 30 dias é durante quanto tempo uma certa coisa fica activa.
 
Podes na mesma usar a função que te disse no INSERT

Código:
INSERT INTO tabela (id, nome, data, data30) VALUES($id, $nome, $data, ADDDATE($data, INTERVAL 30 DAY));

Se estás a usar PHP, podes também trocar o 30 por uma variavel e o número de dias fica também dinamico. Porque se este numero é realmente fixo não faz sentido guardar esta data! Faz-se o calculo no SELECT como eu tinha sugerido
 
Última edição:
Back
Topo