Avatar billede videodyr Nybegynder
04. september 2000 - 22:51 Der er 7 kommentarer og
1 løsning

Time

Hejsa der ud!

Jeg har i min MySql database følgene felter:
dag, mdr, aar, timer, min, post(Der hvor post ligger)

Her kommer spørgsmålet:
Jeg skal har MySQL databasen til at slette post der er over 3 mdr gammel, hvordan gør jeg det?

Hilsen,

Viodedyr
Avatar billede mkelle1 Nybegynder
04. september 2000 - 23:48 #1
Hej Videodyr

Her er et lille script som kan slette i din database

Datoen regnes om til et tal af typen \"2000.76432\". Herfra trækker jeg 3 mdr \"3/12\". Så går jeg ganske enkelt ind og sletter alle poster som hvor aar,mdr,dag udregnet på samme måde er mindre.

Det virker - prøv det!


<?
$dato=date(Y)+date(n)/12+date(j)/365-3/12;
$sql=\"delete from dato where (aar + mdr/12 + dag/365)<$dato\";
$res=mysql_db_query($db,$sql);

?>

Håber du kan bruge det

Mads
Avatar billede nerdyguy Nybegynder
05. september 2000 - 00:25 #2
Dette er virkelig ikke testet!!

<?php
$tid = 60*60*24*30*3;
$db_query = mysql_query(\"SELECT dato FROM liste\");
while ($row = mysql_fetch_array($db_query))
{
  mysql_query(\"DELETE from liste WHERE dato<$tid\");
}
?>
Avatar billede lassehjorth Nybegynder
05. september 2000 - 01:04 #3
hmmmmmm Sådan som jeg forstår det har du 5 felter der indeholder værdierne, hvorfor ikke bruge et datetime ?????
men, æhm prøv denne her :)
<?PHP
$day = date(j);
$month = date(n)-3;
$SQL = \"DELETE FROM table WHERE monthfield<$month AND dayfield<$day\";
mysql_query($SQL);
?>
Tror egentlig ikke den virker, men hvis du havde lavet det som et datetime felt, skulle det se sådan her ud.
<?PHP
$SQL = \"DELETE FROM table WHERE DATE_SUB(datefield, Interval 3 month)\";
mysql_QUERY($SQL);
?>

Nå men jeg håber du kan bruge det til noget....


Avatar billede lassehjorth Nybegynder
05. september 2000 - 01:04 #4
Damnit, det skulle have været et svar....
Avatar billede mkelle1 Nybegynder
05. september 2000 - 01:11 #5
Hej Videodyr.
Hvorfor afviser du et svar uden kommentar - hvad er problemet??

Det eneste problem jeg kan se er at tabelnavnet er \"dato\". Det var det jeg kaldte min tabel da jeg afprøvede det. Her er det så hvor du selv kan sætte dit tabelnavn ind.

<?
$dato=date(Y)+date(n)/12+date(j)/365-3/12;
$sql=\"delete from din_tabel where (aar + mdr/12 + dag/365)<$dato\";
$res=mysql_query($sql);

?>

Avatar billede nerdyguy Nybegynder
05. september 2000 - 13:16 #6
Dette:
dag, mdr, aar, timer, min,
Er nu blevet forkortet til et felt
\'Dato\' med time() inskrevet i .....

Avatar billede videodyr Nybegynder
05. september 2000 - 17:21 #7
Okay, jeg har arbejdet sammen med nerdyguy. Der findes nu kun et felt med dato.
Vi har fået den til at skrive dato ud men den sletter ikke post i Mysql

<?php
$tid = 60*60*24*30*3;
$db_query = mysql_query(\"SELECT dato FROM liste\");
while ($row = mysql_fetch_array($db_query))
{
  mysql_query(\"DELETE from liste WHERE dato<$tid\");
}
?>
Avatar billede mkelle1 Nybegynder
05. september 2000 - 18:46 #8
Hej Videodyr

Dette sletter alle poster der er mere end 3 mdr gamle

<?
//tidspunktet lige nu minus 3 mdr
$dato=(time()-60*60*24*30*3);
$sql=\"delete from liste where dato<$dato\";
$res=mysql_query($sql);

?>

Nu burde det virke, hvis altså det er PHP time() funktionen i snakker om. Hvis det er mysql time så er sagen en anden.

Mads
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester