Avatar billede blueeye97 Nybegynder
09. september 2004 - 11:21 Der er 12 kommentarer og
1 løsning

Slette gamle records i mysql

Jeg har stillet spørgsmålet før og troede da også jeg havde løst problemet. Men det eneste der sker lige nu, er at hele databasen tømmes.

Jeg har i det script som viser hele databasen, i starten lavet følgende:

$idag =date("Y-m-d");
$db = mysql_connect("000.00.00.00", "xxx", "xxx");
mysql_select_db("xxx", $db);

mysql_query("DELETE FROM tabel WHERE opretdato<'$idag'")

opretdato er et DATE felt..

Som sagt sletter denne sql-ting hele basen istedet for at slette de records hvor opretdato ligger 14 dage eller mere tilnbage.
Avatar billede erikjacobsen Ekspert
09. september 2004 - 11:32 #1
Der er flere måder, men du kunne f.x lave datoen for 14 dage siden
$fjortendagesiden =date("Y-m-d",time()-14*24*60*60);
og bruge den
Avatar billede jakobdo Ekspert
09. september 2004 - 12:00 #2
Hvad med denne:

mysql_query("DELETE FROM tabel WHERE DATE_SUB(NOW(),INTERVAL -14 DAY) > opretdato")
Avatar billede blueeye97 Nybegynder
09. september 2004 - 13:08 #3
Den sidste virker ikke. Jeg prøvede lige at oprette en fiktiv dato (2004-01-01). Den burde jo ha været slettet.

Erik >

Din virker vel kun på dem der er præcis 14 dage gamle ikk ? Det skulle gerne virke sådan, at hvergang en bruger loggede sig ind på siden, så blev de forældede slettet automatisk og de aktuelle blev der.
Avatar billede erikjacobsen Ekspert
09. september 2004 - 13:30 #4
Du skal jo ikke sammenligne med "=" men med "<"  -  så tager den alle ældre med.
Avatar billede blueeye97 Nybegynder
09. september 2004 - 15:24 #5
OK.. Jeg er stadigvæk ikke helt med.

Hvordan og hvor skal jeg så putte din $fjortendagesiden ind ?
Avatar billede erikjacobsen Ekspert
09. september 2004 - 15:25 #6
mysql_query("DELETE FROM tabel WHERE opretdato<'$fjortendagesiden'")
Avatar billede blueeye97 Nybegynder
09. september 2004 - 15:37 #7
ok. må hjem og prøve.
Avatar billede blueeye97 Nybegynder
10. september 2004 - 14:45 #8
Testet og jeps... det virker... svar lige Erik :o)
Avatar billede erikjacobsen Ekspert
10. september 2004 - 14:53 #9
Nej tak, jeg samler slet ikke på point.
Avatar billede jakobdo Ekspert
10. september 2004 - 18:06 #10
Hvis det erik har vist dig virker, så burde dette altså også virke:

mysql_query("DELETE FROM tabel WHERE opretdato < DATE_SUB(NOW(),INTERVAL -14 DAY)")
Avatar billede blueeye97 Nybegynder
10. september 2004 - 19:09 #11
Jamen så svar du Jakob, jeg prøvede kun Eriks version. :o)
Avatar billede jakobdo Ekspert
11. september 2004 - 13:54 #12
Jeg er ikke på jagt efter pointene, mere interesseret i om min løsning virkede eller ej! :o)
Avatar billede blueeye97 Nybegynder
18. september 2004 - 22:30 #13
Nåmen så svarer jeg da selv og lukker :o)
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