Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde
tenho a seguinte for como exemplo
for ($i=1;$i<=30; $i++)
{
$data=date("d/m/Y");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','$data')");
}
$data = data de hoje
com esse for estou inserindo 30 registros no banco de uma vez, agora eu gostaria de fazer a varivel $data ir somando os dias ate dar 30,
alguem pode ajudar?
o resultado seria esse
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','28/11/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','29/11/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','30/11/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','31/11/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','01/12/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','02/12/2011')");Carlos na verdade o formato da data eu nao tinha prestado atenção, mas nao é essa a questao.
o formato e tals pode dexa pra la que me viro.
O que eu preciso é q no meu for os 30 registros que ele insere colocasse sempre +1 a partir da data de hoje no campo data.
como se fosse esses insert, so que ao inves de colocar 30 insert gostaria de fazer por for, ficando como exemplo assim
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','30/11/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','31/11/2011')");
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','01/11/2011')");
partindo da data de hoje insiro 30 registros sempre com um dia a mais da aterior
A sugestão do @Carlos, de alterar o formato da data, resolve o seu problema.
É uma espécie de cascata, fazer uma coisa certa, ajuda em corrigir outra.
Desculpe a curiosidade.. mas por que, você precisa inserir dessa forma(30 dias, um por um) ?
essa modelagem na verdade, a uma primeira vista, me parece incorreta. Explique a situação inicial, que talvez haja uma forma melhor de resolver.
Entao... é que assim no sistema que eu uso é cadastrado uma força de trabalho por dia, dai agora preciso mudar para cadastrar direto pros proximos 30 dias.
Dando uma pesquisada acredito que encontrei uma forma no proprio comando mysql usando
DATE_FORMAT(CURDATE() + INTERVAL $i DAY, '%d/%m/%Y')
So que como estou iniciando no php estou com dificuldade pra acerta a syntax certa dessa query, tenti algo mais ou menos assim como exemplo.
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter','DATE_FORMAT(CURDATE() + INTERVAL $i DAY, %d/%m/%Y')");
Pronto consegui resolver meu problemas, dessa forma
mysql_query("INSERT INTO login1 (id,login,nome,data) VALUE ('NULL','G0018256','Peter',CURDATE() + INTERVAL $i DAY)");
obrigado a todos pela ajuda
Primeiro, Porquê a data está no formato dd/mm/yyyy se no banco de dados você pode colocar um campo do tipo DATE e inserir as datas no formato yyyy-mm-dd.
Da forma como sugeri, basta fazer assim
// 2011-11-22
Depois para "puxar" estas datas formatadas no formato brasileiro, use MySQL :seta: DATE_FORMAT
SELECT DATE_FORMAT( '2011-11-21', '%d/%m/%Y' );
21/11/2011
ou se quiser fazer isso no PHP mesmo
// 21/11/2011