Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafaelmota

Deletar conta após um determinado período

Recommended Posts

Amigos,

 

Estou com uma dúvida cruel. Preciso de uma página que irá no cron do meu servidor da seguinte forma após 2 ano inativo sem atualização o cadastro deve morrer de forma automática e enviar e-mail para o fulano.

 

Fiz o código abaixo, será que alguém poderia me ajudar a corrigir o bicho de forma que faça a exclusão de forma correta. Um detalhe meu horario_real que é uma tabela do meu banco está com timestamp 2009-03-02 09:57:27

 

date = date("Y-m-d");

list($anoatual, $mesatual, $diaatual) = explode("-", $date);

 

 

$sql=mysql_query("SELECT * FROM estagie WHERE horario_real > $date",$database);

 

 

 

$anoatual = $anoatual+1;

 

while ($row = mysql_fetch_array($sql)) {

list($ano, $mes, $dia) = explode("-", $row[3]);

 

if ($anoatual > $ano){

 

 

 

$sql = mysql_query("DELETE * FROM estagie);

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

<? 
$data = date("Y-m-d H:i:s", mktime(date("H"),date("m"),date("s"),date('m'),date('d'),date('Y') - 2));//HORA ATUAL MENOS 2 ANOS

$sql=mysql_query("DELETE FROM estagie WHERE horario_real < $data",$database);//SUPONDO QUE horario_real SEJA A DATA DO CADASTRO
?>

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

<? 
$data = date("Y-m-d H:i:s", mktime(date("H"),date("m"),date("s"),date('m'),date('d'),date('Y') - 2));//HORA ATUAL MENOS 2 ANOS

$sql=mysql_query("DELETE FROM estagie WHERE horario_real < $data",$database);//SUPONDO QUE horario_real SEJA A DATA DO CADASTRO
?>

[]'s

Fabem,

 

Sou meio leigo em programação ainda, mas com essas duas linhas eu já conseguiria fazer o que eu quero ? Outra coisa que não entendi porque menos 2 anos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Basicamente isto.

 

Faça o teste.

 

[]'s

Então não entendi o porque do -2 ao invés de +2 outra dúvida ao invés de DELETE FROM estagie WHERE horario_real < $data nao teria que ser DELETE * FROM estagie WHERE horario_real < $data

Compartilhar este post


Link para o post
Compartilhar em outros sites

O PORQUE DO -2:

Data de hoje menos 2 anos para comparar com a data do cadastro.

 

ex:

 

data de hoje: 2009-03-02 14:00:00

$data = 2007-03-02 14:00:00

 

DELETE FROM estagie WHERE horario_real < $data // DELETE FROM estagie WHERE horario_do_cadastro < '2007-03-02 14:00:00'

 

Vai deletar todos os registrados cadastrados antes das 14 hs do dia 02/03/2007

Compartilhar este post


Link para o post
Compartilhar em outros sites

O PORQUE DO -2:

Data de hoje menos 2 anos para comparar com a data do cadastro.

 

ex:

 

data de hoje: 2009-03-02 14:00:00

$data = 2007-03-02 14:00:00

 

DELETE FROM estagie WHERE horario_real < $data // DELETE FROM estagie WHERE horario_do_cadastro < '2007-03-02 14:00:00'

 

Vai deletar todos os registrados cadastrados antes das 14 hs do dia 02/03/2007

fabem,

 

Antes de dar o delete eu pedi para ele fazer um select só que ele me retornou a seguinte mensagem de erro

 

2007-03-02 15:03:28Erro : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '15:03:28' at line 1 Erro códigomysql_errno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora fiz umas modificações pois quero que ele liste os caras que ele irá excluir além de mostrar a data que ele irá excluir

 

		  $data = date("Y-m-d H:i:s", mktime(date("H"),date("m"),date("s"),date('m'),date('d'),date('Y') - 2));//HORA ATUAL MENOS 2 ANOS
		  
		  echo "$data <br/>";
		  
$res=seleciona("SELECT horario_real FROM estagie", $database);



$numero = mysql_num_rows($res);
for($i=0; $i<=0; $i++){
}
  while ($valor=mysql_fetch_array($res))
{
	  
	$valor[horario_real]  
 ;
	
	

$i++;
$data_guarda = $valor[horario_real] . "<br/>";
if ($data_guarda < $data)
{
echo $data_guarda;
$res = seleciona("delete * from estagie WHERE horario_real = $data_guarda");
echo "Arquivo excluido com sucesso";
}
else{
echo "Erro";
}
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

<? $data = date("Y-m-d H:i:s", mktime(date("H"),date("m"),date("s"),date('m'),date('d'),date('Y') - 2));//HORA ATUAL MENOS 2 ANOS

 

echo "$data <br/>";

 

$res = seleciona("SELECT horario_real FROM estagie", $database);

$numero = mysql_num_rows($res);

while ($valor=mysql_fetch_array($res)){

$valor['horario_real'];

$data_guarda = $valor['horario_real'];

if ($data_guarda < $data){

echo $data_guarda."<br/>";

$res = seleciona("delete * from estagie WHERE horario_real = $data_guarda");

echo "Arquivo excluido com sucesso";

}

else echo "Erro";

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu um erro

 

Warning: Missing argument 2 for seleciona(), called in exclusao_auto.php on line 59 and defined in /home/inc/mysql_sql.php on line 6
Erro : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from estagie WHERE horario_real = 2007-02-18 11:59:07' at line 1 Erro códigomysql_errno

Arquivo excluido com sucesso
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in exclusao_auto.php on line 54

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algum erro referente ao argumento 2 da sua função seleciona().

 

Poder ser que esteja faltando o 2º argumento na linha:

 

$res = seleciona("delete * from estagie WHERE horario_real = $data_guarda");

//ficando

$res = seleciona("delete * from estagie WHERE horario_real = $data_guarda", $database);

Você vai ter q estudar o seu código para ver oq é. Veja na linha 59 do arquivo exclusao_auto.php

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabem,

 

Mudei ainda mais minha programação pois o meu problema é que ele não está conseguindo fazer com que as datas sejam excluidas então a idéia é pegar o id da data que vai ser excluida, voce poderia verificar onde está o erro pois não consigo fazer o id aparecer.

 

$date = date("Y-m-d");
list($anoatual, $mesatual, $diaatual) = explode("-", $date);

$date = $anoatual . "-". $mesatual;

echo $date;

echo "<br/>";



$sql = seleciona("SELECT id,horario_real FROM estagie", $database);

$numero = mysql_num_rows($sql);

for($i=0; $i<=0; $i++){
}
$i=1;
  while ($valor=mysql_fetch_array($sql))
  
{

$desmonta = explode("-",$valor["horario_real"]);
		$ano =  $desmonta[0];
		$mes =  $desmonta[1];
$id = $valor['id'];

$data_banco = $ano."-". $mes."<br/>";

if ($data_banco <= ($date -2))
{ 

echo $id;
//$res = seleciona("Delete * from estagie", $database);
} 



}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.