|
 | | |
| Autor | Správa |
neopagan
 Užívateľ
 Založený: 07.08.2006 Príspevky: 681
 | Zaslal: So 12.01.08 11:10 |   |
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... |
| |
  |
 |
Codik
 Užívateľ
 Založený: 27.09.2006 Príspevky: 47 Bydlisko: Bratislava, Slovenská republika
 | Zaslal: So 12.01.08 13:21 |   |
| neopagan napísal: | | 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. |
| |
   |
 |
neopagan
 Užívateľ
 Založený: 07.08.2006 Príspevky: 681
 | Zaslal: So 12.01.08 13: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! |
| |
  |
 |
Codik
 Užívateľ
 Založený: 27.09.2006 Príspevky: 47 Bydlisko: Bratislava, Slovenská republika
 | Zaslal: So 12.01.08 13: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í. |
| |
   |
 |
|
Nemôžete pridávať nové témy do tohto fóra. 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. Nemôžete hlasovať v tomto fóre.
|
| |