Page 1 sur 1

Supprimer les ligne SQL datant d'un certain temps

Posté : 14 juin 2013, 09:27
par thib41
Bonjour !

J'aimerais supprimer les lignes SQL de ma table qui datent de plus d'une heure.

Comment faire ? Merci !

Thib

Re: Supprimer les ligne SQL datant d'un certain temps

Posté : 14 juin 2013, 09:31
par Lyssorus
Je pense qu'il te faut une colonne date de création ou tu range l'heure (au moins, peut être toute la date)

Et tu la test régulièrement, genre toute les 5 ou 10 minutes, pour voir celle qui sont supérieur à une heure d'ancienneté.

Re: Supprimer les ligne SQL datant d'un certain temps

Posté : 14 juin 2013, 09:34
par thib41
Je pense qu'il te faut une colonne date de création ou tu range l'heure (au moins, peut être toute la date)

Et tu la test régulièrement, genre toute les 5 ou 10 minutes, pour voir celle qui sont supérieur à une heure d'ancienneté.

C'est ce que j'ai fait, mais je n'arrive pas à supprimer selon l'ancienneté... Je test des code mais aucun ne fonctionnent jusque maintenant :/

Re: Supprimer les ligne SQL datant d'un certain temps

Posté : 14 juin 2013, 09:49
par Lyssorus
Hummm...


il faut donc bien avoir mis un format date je pense dans la bdd, ensuite tu recharge la valeur de la bdd
<?
mysql_connect("host","user",""); 
mysql_select_db("Nom_BDD");

$sql = 'SELECT Date FROM Nom_Table';
$rowDate = mysql_query($sql);
$TableauDate = mysql_fetch_row($rowDate);

mysql_close(); 
?>
Et là tu fait une boucle qui test toute les cases du TableauDate

Quand une date est supérieur à 1h

Tu recommence :
<?
mysql_connect("host","user",""); 
mysql_select_db("Nom_BDD");

$sql = 'DELETE * FROM Nom_Table WHERE Date = '.$TableauDate[numéro concerné];
mysql_query($sql);

mysql_close(); 
?>
Je ne pense pas que ça fonctionne comme ça, hein, je n'ai pas testé ^^'
Mais je pense que dans l'idée ça devrait pas trop mal se passer.


Édit : Je viens de trouver un truc intéressant

DELETE * FROM historique WHERE date_hist < CURDATE() - INTERVAL 10 DAY

À potasser je dirais :p

Re: Supprimer les ligne SQL datant d'un certain temps

Posté : 14 juin 2013, 11:20
par thib41
Merci beaucoup, mais j'ai finalement opté pour la simplicité avec un if ;)
$time = date("H:i");

$time1 = $time-"01:00";

if($heure <= $time1){
   $del = "DELETE FROM table";
 mysql_query($del) or die (mysql_error());
}
Ça semble fonctionner :)

Re: Supprimer les ligne SQL datant d'un certain temps

Posté : 14 juin 2013, 11:26
par Lyssorus
Parfait, parfait.

Si tu as réussi et que ça te plait c'est tout bon ;)

Pense à mettre en Résolut si tu n'as pas d'autres question :)

Re: [RESOLU] Supprimer les ligne SQL datant d'un certain tem

Posté : 14 juin 2013, 12:42
par thib41
Pour ceux qui liraient ce poste pour savoir comment faire, sachez que j'ai fais une erreur dans mon ancien code (le "-" ne modifiait que l'heure, non la minute, il faut donc créer des variables différentes pour l'heure et la minute) :
//après s'être connecté à la BDD et avoir récupéré le champ [heure] dans $heure :

// définition de la variable affichant l'heure
$time = date("H");

// définition de la variable affichant la minute
$time1 = date("i");

//création de la variable associée à l'heure actuelle moins une heure :
$time2 = $time-1;

//création de la variable associée à l'heure ET minute actuelle moins une heure  : 

$time4 = "".$time2.":".$time1."";

//Si l'heure de la BDD est inférieure à $time4, alors supprimer la ligne :

if($heure <= $time4){
   $del = "DELETE FROM Votre_Table";

   mysql_query($del) or die (mysql_error());
}