12. november 2005 - 19:05Der er
16 kommentarer og 1 løsning
Slet emne efter X uger
Hej der.
Hvordan kan man lave et script der kigger i databasen og ser om et emne er mere end X antal uger. Og hvis den så har været der i mere end det max tilladte, så bliver den slettet. Det med at få den slettet er ikke så svært :) men det med at den skal tjekke er nok lidt svært, i hvertfald ikke noget jeg kan, tror jeg. Jeg havde tænkt mig at det skulle være noget med at når man opretter et emne, så bliver der sat en dato, men ved ikke om det skal være så dag, måned og år er opdelt i hver sit felt, eller om man skal bruge unix timestamp, men hvordan får man den så til at virke med X antal uger??? Det er der mit problem ligger. Er der nogen der tror de kan hjælpe mig.
hmm, jeg har lige kigget på det og prøver at bruge dette men den gør ikke som jeg vil have det til:
mysql_query("UPDATE tid SET vis = '1' WHERE dato >= DATE_SUB(CURDATE(),INTERVAL 30 DAY) ") or die("fejl: ".mysql_error());
jeg har indsat 3 test's hvor de har følgende dato'er: 2005-11-11 2005-11-12 2005-11-13
og alle står med vis som 0, men når jeg kører query'en, tager den også og ændre dem som ligger i fremtiden, som der så også stod inde på den side du linkede til, men jeg kan ikke rigtig kringle, hvordan jeg får den til IKKE at ændre på fremtiden.
og vis jeg skriver: SELECT * FROM tid WHERE dato >= DATE_SUB( CURDATE( ) , INTERVAL - 30 DAY ) tager den kun dem fra fremtiden og med + istedet for minus tager den dem alle
Det din query gør, er den tager dags dato, trækker 30 dage fra og så viser den alle datoer i din query som er større eller lige med den! Ergo vil du få alle felter som er nyere end 11-10-2005 Du skal jo slette dem som er ældre ikke? Så jeg tror du skal lave: DELETE FROM tid WHERE dato < DATE_SUB( CURDATE( ) , INTERVAL 30 DAY )
jeg har lige prøvet det, godt nok ikke med DELETE, men hvor den valgte alt, for at se om den kun tog dem der var gamle, men nej, den tager sørme stadig de "ufødte" endnu
Jeg vil gerne have den til at slette alle de ting i databasen der er mere end 30 dage gammel. Den skal ikke tage dem fra i morgen eller længere fremme kun det er har været. Og jeg kan desværre ikke give nogle eksempler.
HVis vi siger at jeg har indsat noget i min tabel som dette her:
id, dato, note, vis
1, 2005-11-05, test 1, 0 2, 2005-11-06, test 2, 0 3, 2005-11-08, test 3, 0 4, 2005-11-10, test 4, 0 5, 2005-11-11, test 5, 0 6, 2005-11-12, test 6, 0 7, 2005-11-13, test 7, 0 8, 2005-11-14, test 8, 0 9, 2005-11-15, test 9, 0
så skal den slette det så der kun står dette tilbage:
6, 2005-11-12, test 6, 0 7, 2005-11-13, test 7, 0 8, 2005-11-14, test 8, 0 9, 2005-11-15, test 9, 0
hvis jeg ændrede det til: $sql = mysql_query("UPDATE tid SET vis = '1' WHERE dato < CURDATE() ORDER BY dato") or die("fejl: ".mysql_error()); så virkede det. Mange tak for den store hjælp. smid et svar og du får dine point + karma
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.