phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: bodaw (IP adresa zaznamenána)
Datum: 2009-04-04, 01:42

zdravím, potřeboval bych poradit jak smazat záznam z databáze po dosazení určitého času, vůbec totiž nevím jak dál.

$datum = StrFTime("%Y.%m.%d");

$akce=(mysql_query("SELECT * FROM *** WHERE *** ORDER BY datum_akce"));
$akce_radky = mysql_fetch_array($akce);

datum akce mám uloženo ve formátu varchar
potřeboval bych poradit s příkazem DELETE,
když $datum je větší než $akce_radky[datum_akce]

děkuji za radu

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2009-04-04, 11:04

Najdi si tu plugin kalendář akcí, ten to umí, tak se tam můžeš inspirovat ;-)

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2009-04-04, 17:42

když máš datum ve formátu varchar, tak máš smůlu, to nejde, musiš mít datum jako datum

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2009-04-04, 22:29

Teoreticky by mohlo ísť prehodiť string kde je tátum pomocou SQL funkcií do tvaru yyyy.mm.dd-hh.mm.ss a potom v delete použiť where s porovnaním stringu. Je to ale debilné riešenie, dátum proste treba mať ako datetime alebo timestamp.

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: bodaw (IP adresa zaznamenána)
Datum: 2009-04-04, 23:28

jop v tom formátu to mám, a právě když to zkouším ve WHERE porovnávat tak to stále zobrazuje prošlé záznamy (zůstávají v databázi), které by měly být smazány.
v případě příkazu select vše funguje korektně, akorát příkaz delete nefunguje

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: xsuchy09 (IP adresa zaznamenána)
Datum: 2009-04-05, 14:55

Případně je možno datum ukládat jako int - ve fci timestamp :) Int je snad i nejuniverzálnější řešení fungující na všech DB. Osobně používám jedině tuto implementaci, pokud je požadavkem nezávislost na DB. Implementace datumů a funkcí kolem nich je totiž u každé DB jiná (nutnost jiných DB dotazů, přesunutí logiky z DB vrstvy do aplikační - v PHP jednoduchá funkce time aj. související).

========================
WEB: Publikační systém WAMOS
SEO: SEO analýza zdarma
OPEN PROJECTS: Studentský portál VUT
HOSTING: WebGlobe.cz
ICQ: 313887644
EMAIL: xsuchy09(at)centrum.cz
========================

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2009-04-05, 17:08

ale zas pouziti ciselneho typu misto datumoveho zpusobi nemoznost pouzivat funkce pro praci s datumem, ktere dana db obsahuje - takze pokud je phpRS v soucasne dobe jen pro MySQL, tak problem s prenositelnosti na jiny db stroj tu neni a cela podminka pro mazani se da napsat primo v SQL - napr.
... WHERE datum < DATE_SUB(CURDATE(), INTERVAL 5 DAY)

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2009-04-05, 17:10

pa3k napsal/a:
-------------------------------------------------------
> Teoreticky by mohlo ísť prehodiť string kde je
> tátum pomocou SQL funkcií do tvaru
> yyyy.mm.dd-hh.mm.ss a potom v delete použiť where
> s porovnaním stringu. Je to ale debilné riešenie,
> dátum proste treba mať ako datetime alebo
> timestamp.

a hlavne to pak bude narocne na vypocet ktery bude muset databazovy stroj s kazdym zaznamem provadet - pro velke mnozstvi zaznamu zcela nepouzitelne



Celkem upraveno 2×. Poslední úprava MirekS v 05.04.2009 17:10.

Re: mazání záznamu z databáze po určité době
Zaslán uživatelem/kou: xsuchy09 (IP adresa zaznamenána)
Datum: 2009-04-05, 17:23

MirekS napsal/a:
-------------------------------------------------------
> ale zas pouziti ciselneho typu misto datumoveho
> zpusobi nemoznost pouzivat funkce pro praci s
> datumem, ktere dana db obsahuje - takze pokud je
> phpRS v soucasne dobe jen pro MySQL, tak problem s
> prenositelnosti na jiny db stroj tu neni a cela
> podminka pro mazani se da napsat primo v SQL -
> napr.... WHERE datum < DATE_SUB(CURDATE(),
> INTERVAL 5 DAY)

Ještě jednou si přečti, co jsem psal - pouze jsem doplňoval pa3ka, co je vhodné k použití pro datum :) nikoliv co je vhodné pro phpRS. Ano, současné phpRS má implementaci pouze pro MySQL. Jakmile si ale někdo bud chtít přidělat souboru umožňující komunikaci s jinou DB, může mít s těmito datumovými aj. speciálními fcemi závislými na DB problém. Takže jsem jen doplnil další řešení a odůvodnil proč a kdy je nejvhodnější možné :) PEACE

EDIT: Pro tu řešený problém je důležitý první krok - změna typu sloupce v tabulce - za jaký už nechám na samotném implementátorovi :) čistě pro phpRS na MySQL a pro jednoduchost a zvyklost z phpRS bude asi vhodné DATETIME. Update současných záznamů je poté otázka max. jednoho cyklu a je po problému. Využívejte možnosti typovosti sloupců v DB ;)

========================
WEB: Publikační systém WAMOS
SEO: SEO analýza zdarma
OPEN PROJECTS: Studentský portál VUT
HOSTING: WebGlobe.cz
ICQ: 313887644
EMAIL: xsuchy09(at)centrum.cz
========================



Celkem upraveno 2×. Poslední úprava xsuchy09 v 05.04.2009 17:26.



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.