Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] cykliczne czyszczenie tabeli
lnn
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

Ostrzeżenie: (0%)
-----


mam takie pytanko, chcialbym zrobic sobie jedna tabele, ktora przechowywalaby dane wprowadzone przez uzytkownikow ktore potem sa weryfikowane przed administratora (dodawane lub usuwane) i tutaj pytanie:
jak zrobić żeby rekordy z tabeli do weryfikacji kasowaly sie cyklicznie np co iles dni i jak uchronic przed skasowaniem dane ktore zostaly niedawno wprowadzone
np wpis dnia 1-ego po 30 dniach zostaje usniety, natomiast wpis dodany 30 dnia zeby usuwalo dopiero po 30stu dniach od dodania - moze przy dodawaniu rekordu zeby dodawalo date dodania a potem zeby skrypt sprawdzal ile dni minelo i sam usuwal, czy wygodniejsze bedzie dodanie w panelu administracyjnym opcji np "czysc tabele tymczasowa"? ktora manualnie bedzie musiala byc wywolywana..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
slawny
post
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zrób w bazie dodatkową kolumnę data_usuniecia i tyle
Go to the top of the page
+Quote Post
lnn
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

Ostrzeżenie: (0%)
-----


hmmm i podczas dodawania rekordu zeby do aktualnej daty dodawalo 30 dni?
Go to the top of the page
+Quote Post
slawny
post
Post #4





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No ja bym to chyba tak rozwiązał, rozwiązania najprostsze bywają najlepsze. Ale poczekaj może ktoś podrzuci inne, lepsze rozwiązanie.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jeżeli limit 30 dni jest stały dla wszystkich rekordów to wystarczy usunąć te rekordy, których data dodania jest mniejsza od aktualnego czasu minus 30 dni. Jeżeli datę dodania masz w formacie UNIX_TIMESTAMP, to:
  1. DELETE FROM tbl_name WHERE created_at < {time() - 3600 * 24 *30};
Jeżeli jako DATETIME
  1. DROP FROM tbl_name WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
A zapytanie to możesz wykonywać np. przed pobraniem listy rekordów do wyświetlenia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:56