Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, tenho uma tabela em um BD, onde á 3 campos. O campo "agora" receberá a hora, deverá armazenar a hora atual + X segundos, onde este "X", é o valor da variavel $tempo. O campo é do tipo datetime. O que quero fazer é, atualizar um cadastro no BD, colocando a data e hora atual + um tempo (Y-m-d H:i:s).
O Grande problema é que, ele só está armazenando a data e hora atual, mas não acrescenta os segundos, posso colocar dias, horas, semanas, anos e etc, mas ele não faz. Parece que ele "ignora" a parte do "INTERVAL", só usa o "NOW()". Vejam o codigo:
$atualize=mysql_query ("update tempo set ad='2',agora=DATE_ADD(NOW(), INTERVAL $tempo SECOND) where id='1' ")
or die("<BR><BR>Erro ao atualizar!!!");
O que está errado? O pior é que, eu descobri esta função a um mês atráz, deu tudo certo, então deixei ela de lado, mas agora que resolvi usa-la de novo, detalhe: *no mesmo arquivo que antes*; ela não funciona, acho que mexi antes e não me lembro... da uma força ai pessoal....>
Já tentou algo com a função strtotime do php? A única coisa é que terá de fazer o tratamento fora do SQL.
http://php.net/manual/pt_BR/function.strtotime.php
$segundos = 10;
$atualizado = date('Y-m-d H:i:s', strtotime("+".$segundos." seconds"));
No caso se quiser adicionar dias
$dias = 10;
$atualizado = date('Y-m-d H:i:s', strtotime("+".$dias." days"));
Espero ter ajudado...
Também não deu certo, ele só salva a hora atual, mas não soma com o tempo adicional! Sabe o que pode está acontecendo?
Fiz uma modificação, mas mesmo assim não deu certo.
$hora= date("Y-m-d H:i:s", strtotime("+ 600 second"));
$atualize=mysql_query ("update tempo set ad='2',agora='$hora' where id='1' ")
or die("<BR><BR>Erro ao atualizar!!!");
Ele coloca a hora atual + os 10 minutos(600 segundos), mas acrescenta mais 5 horas. Exemplo, executei as 16:00:00; ele registrou 21:10:00. COMO?! Ele não está pegando a data e hora do servidor? E o servidor não é o meu pc? Que doideira é esta?
Se você quer inserir segundos, não seria melhor utilizar a função ADDTIME?
Funcion da mesma forma, só que para tempo.
OK! Refiz todo o código, mas, ele não aceita segundos, minutos ou horas; só semanas, meses, dias, anos.
Se coloco segundos,por exemplo, ele salva só a data e tempo atual, ou sejá, o erro continua. E á respeito do que o Gabriel Heming disse, creio que não da certo, pois dependendo do caso, vai ter tantos segundos, que na verdade será horas, dias, etc...
Por que isso?! Alguém sabe?
$distancia=1;
$velocidade=60;
$tempo=$distancia*$velocidade;
$busca=mysql_query ("SELECT estado FROM tempo WHERE id='1'")
or die ("<h1>Não foi possível realizar as buscas:</h1>".mysql_error());
while ($reg=mysql_fetch_assoc($busca))
{
$estado_db=$reg["estado"];
}
//Verificando se o estado está livre, se estiver, prepara o Banco de Dados para iniciar o tempo.
if ($estado_db=="livre")
{
$dados="UPDATE tempo SET estado='em_uso', agora=NOW(), futuro=DATE_ADD(NOW(), INTERVAL ".$tempo." SECOND) WHERE id='1'";
$atualize=mysql_query($dados)
or die ("<BR><BR>Erro ao atualizar!!! ".mysql_error());
}
Já tentou algo com a função strtotime do php? A única coisa é que terá de fazer o tratamento fora do SQL.
http://php.net/manual/pt_BR/function.strtotime.php
No caso se quiser adicionar dias
Espero ter ajudado...