Autor | Zpráva | ||
---|---|---|---|
ondra.prenek Profil |
#1 · Zasláno: 29. 12. 2014, 11:12:04
Ahoj, mám udělané vkládání příspěvků na stránce pomocí php/mysql. Měl bych dotaz jak udělám automatické odstranění příspěvku? například po třech měsících že se smaže a taky jak udělám odstranění uživatelem. Například že když bude daný uživatel, co příspěvek vložil přihlášený, tak se mu ukáže u příspěvku tlačítko, nebo nějaký odkaz na odstranění příspěvku z databáze(tedy i z webu).
Jde to nějak? díky za návrhy/odpovědi |
||
Marschmallow Profil |
#2 · Zasláno: 29. 12. 2014, 11:20:46
ondra.prenek:
Ukládáš do databáze i čas? A v jakém formátu? |
||
ondra.prenek Profil |
#3 · Zasláno: 29. 12. 2014, 11:48:31
Ukládám. Vkládá se tam automaticky ve formátu Date. Pak ho akorát jinak vypisuji(aby tam nebyli pomlčky ale tečky)
|
||
juriad Profil |
ondra.prenek:
Máš nějaký důvod staré příspěvky mazat (úspora místa opravdu důvodem v dnešní době není)? Pak by stačil proště do každého dotazu přidat jednu podmínku (datum pro porovnávání ideálně spočítej v PHP jako dnešek - 3 měsíce; jak se to má chovat vůči letnímu/zimnímu času?): WHERE datum > '2014-09-29 12:01:59' DELETE FROM prispevky WHERE datum < '2014-09-29 12:01:59' Každý příspěvek má číselné ID (má ho, ne?) a to si předáš mazacímu skriptu: <a href="smaz.php?id=1234">Smazat příspěvek 1234</a> DELETE FROM prispevky WHERE id = 1234 UPDATE prispevky SET smazany = 1 WHERE id = 1234 WHERE smazany = 0 |
||
ondra.prenek Profil |
#5 · Zasláno: 29. 12. 2014, 12:21:33
takže nejde přidat nějaký script který to jednou za tři měsíce smazal? nejsou to příspěvky ale inzeráty a chtěl bych aby ten web byl aktuální. Blbě jsem to napsal.. :)
|
||
juriad Profil |
V databázi klidně můžou zůstat. Jen do všech dotazů přidáš podmínku, že chceš jen ty novější než 3 měsíce.
Takový skript lze napsat, ale spíš je problém v tom, co ho spustí. Můžeš testovat při každém výpisu, zda je nějaký inzerát ke smazání, ale to asni není úplně ono. Další možností je ruční spuštění (pokud adminovi bude připadat, že jsou tam moc staré inzeráty, prostě stiskne tlačítko). A poslední možností je cron nebo nějaký jiný plánovač, který spustí skript v naplánovaný okamžik (třeba první den v měsíci). |
||
Marschmallow Profil |
#7 · Zasláno: 29. 12. 2014, 12:45:57
ondra.prenek:
Takže máš u inzerátů nějaké číselné ID, které je s každým dalším inzerátem vyšší? |
||
ondra.prenek Profil |
#8 · Zasláno: 29. 12. 2014, 13:07:58
jo každý inzerát má přidělený id i datum vložení. A jak by ten script měl vypadat? Líbí se mi ten s tím že se spustí začátkem měsíce
|
||
juriad Profil |
Na hostingu je nejčastějším plánovačem cron nebo jeho obdoba (nezadává se obecně příkaz, ale cesta k php skriptu). Ale poptej (myšleno přečti si dokumentaci) se svého hostingu. Často se nastavuje někde ve webovém rozhraní a často je omezený počtem nebo frekvencí událostí.
Konfigurace může vypadat takto: 0 0 1 * * skript.php A skript.php bude zastrčený v neveřejné části hostingu (tak, aby nebyl zvenku dostupný). Tento skript prostě spočítá datum před třemi měsíci a položí dotaz do databáze na smazání starých inzerátů; spuštěn 1. ledna bude dotaz vypadat takto: DELETE FROM prispevky WHERE datum < '2014-10-1 0:00:00' |
||
Časová prodleva: 9 let
|
0