| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
Vedel by mi niekto poradit s nasledovnym problemom?
Mam inzertny portal, kde sa vkladane inzeraty ukladaju do databazy. Chcel by som dosiahnut, aby sa vlozeny inzerat po 3 mesiacoch z databazy automaticky zmazal.
Moja myslienka realizacie je:
Pri vlozeni inzeratu sa do premennej datum uklada spolu s inzeratom aj datum vlozenia. Vytvoril by som teda premennu datum_zmazania, ktorej hodnota by bola datum vlozenia+3 mesiace. To zatial viem zvladnut.
Potom by vsak mal nasledovat script, ktory by porovnaval aktualny datum s premennou datum_zmazania kazdy den trebars o 1.00 po polnoci. No a nasledne ak sa toto zhoduje, by vymazal z databazy konkretny inzerat. Pravdepodobne sa to bude dat pomocou Cron-u. Neviem vsak este ako presne to funguje, s cronom som este nerobil. Problem je vsak, ze mam okolo 100 kategorii - teda tabuliek v databaze, a to by musel prehladavat datumy vo vsetkych tabulkach...
|
|
Registrovaný: 27.09.06 Prihlásený: 05.01.16 Príspevky: 47 Témy: 0 Bydlisko: Bratislava,... | Napísal Codik: 12.01.2008 12:21 | |
|
neopagan píše: Pri vlozeni inzeratu sa do premennej datum uklada spolu s inzeratom aj datum vlozenia. Vytvoril by som teda premennu datum_zmazania, ktorej hodnota by bola datum vlozenia+3 mesiace. To zatial viem zvladnut.
Dúfam, že som to správne pochopil. Ak máš v tabuľke stĺpec dátum, ktorý reprezentuje dátum vloženia, je zbytočné pridávať ďalší stĺpec, ktorý bude obsahovať prakticky rovnaké dáta. Lepšie sa to dá dosiahnuť porovnávaním v SQL príkaze, ktorý bude mazať z tabuľky inzeráty staršie ako 3 mesiace.
Kód: DELETE FROM kategoria WHERE ABS(DATEDIFF(datum, NOW())) >= 90;
V SQL príkaze je datum stĺpec, v ktorom je uložený dátum pridania. Budú sa mazať inzeráty, ktoré sú staré 90 dní.
Kvôli návrhu databázy, aký opisuješ, budeš musieť spustiť 100 SQL príkazov.
|
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice | Napísal autor témy neopagan: 12.01.2008 12:49 | |
|
Aha, dakujem pekne! Takto to vyzera ovela jednoduchsie. To som teda netusil, ze sa to da aj takto. Potom uz len nacasovat pomocou cronu ten script, v ktorom bude zahrnute to DELETE pre vsetky tabulky. Nemylim sa?
Este raz diky Codik!
|
|
Registrovaný: 27.09.06 Prihlásený: 05.01.16 Príspevky: 47 Témy: 0 Bydlisko: Bratislava,... | Napísal Codik: 12.01.2008 12:56 | |
|
Áno, je to tak ako hovoríš. No a na použitie CRONU máš prakticky 2 možnosti (aj viac ).
1. Spúšťať ho každý deň.
2. Spúšťať ho napr. raz za týždeň. A aby sa ti nezobrazovali staršie inzeráty na stránkach, zmeníš SQL príkazy, ktoré ich vypisujú tak, že tam pridáš podobnú podmienku ako v predchádzajúcom SQL príkaze.
Kód: SELECT * FROM kategoria WHERE ABS(DATEDIFF(datum, NOW())) < 90;
Záleží od tvojich možností.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|