Avatar billede konder Nybegynder
08. maj 2005 - 12:28 Der er 24 kommentarer og
1 løsning

Automatisk sletning af gamle poster i databasen.

Jeg har en database med poster efter dato. Kan jeg få lavet det sådan at de poster i databasen der er ældre end dags dato automatisk bliver slettet helt?
Avatar billede arne_v Ekspert
08. maj 2005 - 12:32 #1
ikke helt automatisk

men du kan lade et job køre  en gang i døgnet og slette det som er for gammelt

eller du kan lade almindelige requests (jeg forudsætter her en web app) teste
om der skal slettes og gøre det hvis nødvendigt
Avatar billede konder Nybegynder
08. maj 2005 - 12:45 #2
Som du ved er jeg et klumphoved til det her men... Lade et job køre engang i døgnet lyder jo som det jeg mangler.
Avatar billede konder Nybegynder
08. maj 2005 - 12:45 #3
Hvordan skal et sådan job se ud?
Avatar billede arne_v Ekspert
08. maj 2005 - 12:55 #4
du laver et lille program PHP/Java/whatever

så sætter du det til at blive kørt en gang i døgnet

Windows har Windows scheduler

Linux har cron
Avatar billede konder Nybegynder
08. maj 2005 - 12:59 #5
Ok jeg forsøger, men må også lige følge forventningerne fra familien så du får nok først besked/point meget senere idag :)
Avatar billede konder Nybegynder
22. maj 2005 - 12:12 #6
Hej igen. Efter flere nedbrud både familiært og teknisk..Jeg vil nu alligevel ikke slette de gamle poster i databasen, men gerne kun have vist de aktuelle poster. Altså en betingelse for at mit datofelt "dag" er >= med dags dato.Jeg har i forvejen denne betingelse:
while ($row=mysql_fetch_assoc($foresp)){så viser den resultatet}
Kan jeg sætte yderligere betingelser på den?
Avatar billede arne_v Ekspert
22. maj 2005 - 14:16 #7
øh

du skal vel have en WHERE betingelse på i din SQL
Avatar billede konder Nybegynder
22. maj 2005 - 19:35 #8
ja det er jo det jeg fisker efter men får hele tilen fejlmeddelser og familiære afbrud. Kan jeg sige where 'dag' >= date()?
Avatar billede arne_v Ekspert
22. maj 2005 - 19:41 #9
med en ny MySQL (4.1) kan du:

... WHERE datofelt > DATE_SUB(NOW(), 1)
Avatar billede konder Nybegynder
22. maj 2005 - 20:01 #10
ja det var jo det jeg troede men sætter jeg and where lige ud af landevejen efter
Avatar billede arne_v Ekspert
22. maj 2005 - 20:14 #11
... WHERE datofelt > DATE_SUB(NOW(), 1) AND andetfelt = 123 AND trediefelt = 'ABC'
Avatar billede konder Nybegynder
22. maj 2005 - 20:14 #12
jeg kan ikke få det til at virke ihvertfald. Efter:
$foresp = mysql_query("SELECT dag, amug, bmug, cmug, DATE_FORMAT(dag, '%d-%m-%Y') as visdag FROM tid  WHERE dag > DATE_SUB(NOW(), 1) ORDER BY dag");Får jeg får fejl i sætningen: while ($row=mysql_fetch_assoc($foresp)) {
Avatar billede arne_v Ekspert
22. maj 2005 - 20:16 #13
$foresp = mysql_query("SELECT dag, amug, bmug, cmug, DATE_FORMAT(dag, '%d-%m-%Y') as visdag FROM tid  WHERE dag > DATE_SUB(NOW(), 1) ORDER BY dag") or die(mysql_error());
Avatar billede arne_v Ekspert
22. maj 2005 - 20:17 #14
hvilken version af MySQL bruger du ?
Avatar billede konder Nybegynder
22. maj 2005 - 20:18 #15
4,et eller andet- tror jeg
Avatar billede arne_v Ekspert
22. maj 2005 - 20:22 #16
vigtigt om det er 4.0.x eller 4.1.x jævnfør min 19:41:33 note
Avatar billede konder Nybegynder
22. maj 2005 - 20:26 #17
hvor kan jeg hurtigt se det?
Avatar billede arne_v Ekspert
22. maj 2005 - 20:30 #18
select version();
Avatar billede konder Nybegynder
22. maj 2005 - 20:31 #19
Alle de papirer jeg har siger php4. Og det er jo ikke særlig eksakt.
Avatar billede arne_v Ekspert
22. maj 2005 - 23:15 #20
PHP version og MySQL version har ikke noget med hinanden at gøre
Avatar billede arne_v Ekspert
22. maj 2005 - 23:17 #21
men vi skal nok se output fra 20:16:46 for at komme videre
Avatar billede konder Nybegynder
25. maj 2005 - 06:47 #22
Den giver denne fejlmelding:
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 '1) ORDER BY dag' at line 1
Jeg er ked af jeg ikke sidder ved pc-en så meget af tiden.
Version 4.0 i mysql iøvrigt. God dag
Avatar billede arne_v Ekspert
25. maj 2005 - 08:48 #23
prøv lige

$foresp = mysql_query("SELECT dag, amug, bmug, cmug, DATE_FORMAT(dag, '%d-%m-%Y') as visdag FROM tid  WHERE dag > DATE_SUB(NOW(), INTERVAL 1 DAY) ORDER BY dag") or die(mysql_error());
Avatar billede konder Nybegynder
28. maj 2005 - 10:11 #24
Mange tak for hjælpen. Du skal bare lægge et svar. Det virker upåklageligt nu.
Avatar billede arne_v Ekspert
28. maj 2005 - 10:34 #25
ok
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
Computerworld tilbyder specialiserede kurser i database-management

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