Suppimer des données après x jours
joki84
-
Alain42 -
Alain42 -
Bonjour,
Je suis en train de creer un script permettant de gérer l'affichage de bannières.
Pour cela, j'ai dans ma base de données, les tables suivantes :
Je n'ai pas rencontré de problème majeur jusqu'à présent...mais la je stagne sur un probleme...
En fait comme vous pouvez le constater, il y a une date de debut et de fin de campagne. Je souhaite faire un script (executé par un cronjob) qui effacerait automatiquement les campagnes périmées depuis 10 jours. il faudra donc que j utilise la fonction DELETE...mais comment préciser WHERE datefincampagne < 10 jours??
Merci
Jonathan
Je suis en train de creer un script permettant de gérer l'affichage de bannières.
Pour cela, j'ai dans ma base de données, les tables suivantes :
CREATE TABLE `campagne` ( `idcampagne` int(10) unsigned NOT NULL auto_increment, `nomcampagne` varchar(40) default '0', `regiecampagne` varchar(40) default NULL, `codecampagne` text, `typesupport` varchar(50) default NULL, `datedebutcampagne` date NOT NULL default '0000-00-00', `datefincampagne` date NOT NULL default '0000-00-00', `nombrepoints` int(10) default '0', PRIMARY KEY (`idcampagne`) )
Je n'ai pas rencontré de problème majeur jusqu'à présent...mais la je stagne sur un probleme...
En fait comme vous pouvez le constater, il y a une date de debut et de fin de campagne. Je souhaite faire un script (executé par un cronjob) qui effacerait automatiquement les campagnes périmées depuis 10 jours. il faudra donc que j utilise la fonction DELETE...mais comment préciser WHERE datefincampagne < 10 jours??
Merci
Jonathan
A voir également:
- Suppimer des données après x jours
- Fuite données maif - Guide
- Site x - Guide
- Sites X : Pornhub, YouPorn et Redtube sont de nouveau accessibles en France - Guide
- Compte facebook suspendu 180 jours - Guide
- Trier des données excel - Guide
7 réponses
Salut,
tu fais une variable avec la date du jour +10 jours
et tu utilises ca pour ta condition WHERE datefincampagne > $date_peromption
@lain
tu fais une variable avec la date du jour +10 jours
$today=time(); //timestamp unix du jour
$today_plus_dix=$today+(3600*24*10); // auquel on rajoute le nombre de secondes correspondant a 10 jours
$date_peromption=date('Y-m-d",$today_plus_dix); //mise au format date mysql (a verifier ?)
et tu utilises ca pour ta condition WHERE datefincampagne > $date_peromption
@lain
Bonjour,
Merci pour ton aide Alain..mais j ai un autre souci maintenant...En fait je souhaite que le systeme m'envoi un email en m'indiquant les campagnes qui ont été supprimmées...J'ai donc tenté de la manière suivante mais cela ne fonctionne pas...
Qu'est ce qui cloche???
Merci pour ton aide Alain..mais j ai un autre souci maintenant...En fait je souhaite que le systeme m'envoi un email en m'indiquant les campagnes qui ont été supprimmées...J'ai donc tenté de la manière suivante mais cela ne fonctionne pas...
<?php
include ('dbconnect.php');
$today=time(); //timestamp unix du jour
$today_plus_dix=$today+(3600*24*10); // auquel on rajoute le nombre de secondes correspondant a 10 jours
$date_peromption=date('Y-m-d',$today_plus_dix); // mise au format MySql
$sql=mysql_query("SELECT * FROM campagne WHERE datefincampagne > '$date_peromption'");
$from_email = "support@voilou.fr";
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$msg = "Bonjour, \n";
$msg .= "\n";
$msg .= "Les campagnes suivantes ont été supprimées de la base :\n";
$msg .= "\n";
$msg .= "$nomcampagne de la régie $regiecampagne \n";
$msg .= "\n";
$msg .= "Bonne Journée !\n";
$sql=mysql_query("DELETE * FROM campagne WHERE datefincampagne > '$date_peromption'");
if(mysql_num_rows($sql))
{
mail(support@voilou.fr,'Des campagnes ont été supprimées',$msg,$entetemail);
exit;
}
// on ferme la connexion à mysql
mysql_close();
?>
Qu'est ce qui cloche???
salut,
il te manque un bout de code pour finir ton extraction apres le SELECT
a une erreur de frappe pres ?
Bye
il te manque un bout de code pour finir ton extraction apres le SELECT
$sql=mysql_query("SELECT * FROM campagne WHERE datefincampagne > '$date_peromption'");
//il faut sortir les donnees de la zone memoire par une boucle while
$liste="";
while($ligne=mysql_fetch-array($sql)){
$liste.=$ligne['nomcampagne']." de la regie ".$ligne['regiecampagne']."\n"; // on construit la liste
}
$from_email = "support@voilou.fr";
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$msg = "Bonjour, \n";
$msg .= "\n";
$msg .= "Les campagnes suivantes ont été supprimées de la base :\n";
$msg .= "\n";
$msg .= "$liste;
$msg .= "\n";
$msg .= "Bonne Journée !\n";
a une erreur de frappe pres ?
Bye
Bonjour Alain,
En fait lorsque je lance le script, les données ne sont pas supprimées de la base...Pourtant tout a l air en ordre...
En fait lorsque je lance le script, les données ne sont pas supprimées de la base...Pourtant tout a l air en ordre...
<?php
include ('dbconnect.php');
$today=time(); //timestamp unix du jour
$today_plus_dix=$today+(3600*24*10); // auquel on rajoute le nombre de secondes correspondant a 10 jours
$date_peromption=date('Y-m-d',$today_plus_dix); // mise au format MySql
$sql=mysql_query("SELECT * FROM campagne WHERE datefincampagne > '$date_peromption'");
//il faut sortir les donnees de la zone memoire par une boucle while
$liste="";
while($ligne=mysql_fetch-array($sql)){
$liste.=$ligne['nomcampagne']." de la regie ".$ligne['regiecampagne']."\n"; // on construit la liste
}
$from_email = "support@voilou.fr";
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$msg = "Bonjour, \n";
$msg .= "\n";
$msg .= "Les campagnes suivantes ont été supprimées de la base :\n";
$msg .= "\n";
$msg .= "$liste";
$msg .= "\n";
$msg .= "Bonne Journée !\n";
$sql=mysql_query("DELETE FROM campagne WHERE datefincampagne > '$date_peromption'");
if(mysql_num_rows($sql))
{
mail(support@voilou.fr,'Des campagnes ont été supprimées',$msg,$entetemail);
exit;
}
// on ferme la connexion à mysql
mysql_close();
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ta requette semble correcte:
DELETE FROM campagne WHERE datefincampagne > '$date_peromption'
ou essayes:
Mais fais un echo $date_peromption; pour voir si cette date est bien au meme format que celles qui sont dans ta table
au passage j'ai fait une faute a peremption j'ai mis peromption ?
Mais ce n'est pas ce qui gene
Supprimes aussi le exit; apres mail(.........
Il te fait sortir de ta condition inutilement, tu court-circuite mysql_close()
J'ai aussi fait une grosse erreur genante cette fois ci a:
while($ligne=mysql_fetch-array($sql))
il faut:
tu peux aussi faire un echo mysql_num_rows($sql); apres ta requette;
$sql=mysql_query("SELECT * FROM campagne WHERE datefincampagne > '$date_peromption'");
pour voir si il en trouve bien
et pour voir le format des dates dans ta base un echo $ligne['datefincampagne']; dans ta boucle while
normalement elle devrait etre au format 2007-10-15
Excuses moi mais je galere avec un clavier qwerty, je suis (tres) loin de chez moi
@lain
DELETE FROM campagne WHERE datefincampagne > '$date_peromption'
ou essayes:
"DELETE FROM campagne WHERE datefincampagne > '".$date_peromption."' "
Mais fais un echo $date_peromption; pour voir si cette date est bien au meme format que celles qui sont dans ta table
au passage j'ai fait une faute a peremption j'ai mis peromption ?
Mais ce n'est pas ce qui gene
Supprimes aussi le exit; apres mail(.........
Il te fait sortir de ta condition inutilement, tu court-circuite mysql_close()
J'ai aussi fait une grosse erreur genante cette fois ci a:
while($ligne=mysql_fetch-array($sql))
il faut:
while($ligne=mysql_fetch_array($sql))under score a la place du tiret !
tu peux aussi faire un echo mysql_num_rows($sql); apres ta requette;
$sql=mysql_query("SELECT * FROM campagne WHERE datefincampagne > '$date_peromption'");
pour voir si il en trouve bien
et pour voir le format des dates dans ta base un echo $ligne['datefincampagne']; dans ta boucle while
normalement elle devrait etre au format 2007-10-15
Excuses moi mais je galere avec un clavier qwerty, je suis (tres) loin de chez moi
@lain
Bonjour,
Voila j'ai reussi a faire fonctionner le script...j ai juste modifier le parametre temps...
Par contre le probleme est que le systeme m'envoit pas l'email contenant les campagnes qui ont été supprimées...
Voila j'ai reussi a faire fonctionner le script...j ai juste modifier le parametre temps...
Par contre le probleme est que le systeme m'envoit pas l'email contenant les campagnes qui ont été supprimées...
<?php
include ('dbconnect.php');
$today=time(); //timestamp unix du jour
$today_plus_dix=$today-(3600*24*1); // auquel on rajoute le nombre de secondes correspondant a 10 jours
$date_peromption=date('Y-m-d',$today_plus_dix); // mise au format MySql
$sql=mysql_query("SELECT * FROM campagne WHERE datefincampagne < '".$date_peromption."'") or die('Impossible de selectioner les données dans la base'.mysql_error());
//il faut sortir les donnees de la zone memoire par une boucle while
$liste="";
while($ligne=mysql_fetch_array($sql)){
$liste.=$ligne['nomcampagne']." de la regie ".$ligne['regiecampagne']."\n"; // on construit la liste
}
$from_email = "system@voilou.fr";
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$msg = "Bonjour, \n";
$msg .= "\n";
$msg .= "Les campagnes suivantes ont été supprimées de la base :\n";
$msg .= "\n";
$msg .= "$liste";
$msg .= "\n";
$msg .= "Bonne Journée !\n";
$sql2=mysql_query("DELETE FROM campagne WHERE datefincampagne < '".$date_peromption."'") or die('Impossible de supprimer les données dans la base'.mysql_error());
if(mysql_affected_rows($sql2))
{
mail('support@voilou.fr','Des campagnes ont été supprimées',$msg,$entetemail);
}
// on ferme la connexion à mysql
mysql_close();
?>
Salut
Bizarre ça:
$sql2=mysql_query("DELETE FROM campagne WHERE datefincampagne < '".$date_peromption."'" or die('Impossible de supprimer les données dans la base'.mysql_error());
if(mysql_affected_rows($sql2))
{
mail('support@voilou.fr','Des campagnes ont été supprimées',$msg,$entetemail);
}
remplace plutot par:
Bizarre ça:
$sql2=mysql_query("DELETE FROM campagne WHERE datefincampagne < '".$date_peromption."'" or die('Impossible de supprimer les données dans la base'.mysql_error());
if(mysql_affected_rows($sql2))
{
mail('support@voilou.fr','Des campagnes ont été supprimées',$msg,$entetemail);
}
remplace plutot par:
$req_sql2="DELETE FROM campagne WHERE datefincampagne < '".$date_peromption."'";
$nb_suppr=mysql_query($sql2) or die('Impossible supprimer les données dans la base'.mysql_error());
// l'instruction DELETE renvoie le nombre supprimes
if($nb_supp>0)
{
mail('support@voilou.fr','Des campagnes ont été supprimées',$msg,$entetemail);
}