Ir para conteúdo
Fórum Script Brasil
  • 0

Deletar linhas antigas no banco de dados


Lucas Trindade

Pergunta

Olá!

Estou com um problema para a criação de um scrpt que busque por um dado antigo no banco de dados.

Tenho uma tabela com uma coluna chamada data que define a hora que uma linha foi criada. Durante o uso do site a data é renovada cada vez que o usuario muda de pagina. Porém preciso de um script que funcione externamente a qualquer pagina e delete as linhas em que a diferença da coluna data para a data atual seja superior a 1 hora (seria agendada no servidor a execução do script a cada 5 segundos).

Obrigado!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Não existe mistério.

Faça uma simples busca no seu banco de dados tipo:

$hora = date("H:m:i")-1;
SELECT * FROM sua_tabela WHERE hora < '$hora';
Ai faça um laço de repetição com uma query a cada registro deletando-os. Um exemplo de como pode ser feito:
$hora = date("H:m:i")-1;
$query = mysql_query("SELECT * FROM tabela WHERE hora < '$hora'");
if(mysql_num_rows($query) > 0){
while($var = mysql_fetch_array($query)){
$del = mysql_query("DELETE FROM tabela WHERE id = '$var[id]'");
}
}

Só não tenho certeza da sintaxe da quer DELETE, pois não uso muito ai as vezes foge da cabeça, mas ta ai a idéia.

Link para o comentário
Compartilhar em outros sites

  • 0
Não existe mistério.

Faça uma simples busca no seu banco de dados tipo:

$hora = date("H:m:i")-1;
SELECT * FROM sua_tabela WHERE hora < '$hora';
Ai faça um laço de repetição com uma query a cada registro deletando-os. Um exemplo de como pode ser feito:
$hora = date("H:m:i")-1;
$query = mysql_query("SELECT * FROM tabela WHERE hora < '$hora'");
if(mysql_num_rows($query) > 0){
while($var = mysql_fetch_array($query)){
$del = mysql_query("DELETE FROM tabela WHERE id = '$var[id]'");
}
}

Só não tenho certeza da sintaxe da quer DELETE, pois não uso muito ai as vezes foge da cabeça, mas ta ai a idéia.

entendi... mas ainda ficou uma duvida... o script a seguir pega a hora atual e volta uma hora. Não é?

$hora = date("H:m:i")-1

exemplo: são 8:23 ele faz aparecer 7:23 certo?

como eu faria pra voltar só meia hora? de 8:23 pra 7:53 por exemplo.

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui fazer! Percebi que aquele script daria problema na passagem das 23:59:59 para 00:00:00. Então preferi trabalhar com a data completa no formato YmdHis sem separadores mesmo, assim geraria um numero de 14 digitos que só cresce então fiz o script que deleta os antigos. Ficou assim:

<?php
date_default_timezone_set('Brazil/East');
$mysql_server = 'servidor';
$mysql_username = 'usuario';
$mysql_password = 'senha';
$mysql_database = 'banco de dados';
$db = mysql_connect($mysql_server, $mysql_username, $mysql_password);
mysql_select_db($mysql_database, $db);

$hora = date("YmdHis")-3000;
$query = mysql_query("SELECT * FROM tabelaWHERE hora < '$hora'");
if(mysql_num_rows($query) > 0)
{
   while($var = mysql_fetch_array($query))
   {
      $del = mysql_query("DELETE FROM tabela WHERE id = '$var[id]'");
   }
}
?>

Registros sem mudança por mais de meia hora são deletados. Valeu pela ajuda vini, seu script me deu a base para fazer um que funcionasse em qualquer situação. Obrigado

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...