Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno mysql - automatický update a kontrola data

Dobrý den, řeším jeden problém: dělám jako BP jeden web (php) s databází (mysql) a potřebuji vyřešit toto:

Mám tabulku kde kromě jiných atributů je atribut "stav" a atribut "datum"..obojí je vyplněno a já potřebuju aby až nastane to datum, které je ve sloupci "datum" uloženo, databáze sama změnila ve stejném řádku ve sloupci "stav" hodnotu...

názorný příklad:

id | stav | datum |
---------------------------------
1 | připraveno | 2012-03-02 |
2 | probíhá | 2012-02-22 |
3 | připraveno | 2012-03-04 |
---------------------------------

tedy v 0:00 2. března 2012 potřebuju, aby se sama změnila hodnota "stav" u id 1 na probíhá a to stejné u id 3 4. března 2012...

Moc děkuji za pomoc

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak jsem zkoušel nastavit ty eventy, ale bohužel to nějak nefunguje-zkoušel jsem různé příklady z ne…
n.u.r.v. 05.03.2012 02:19
n.u.r.v.
neviem ti teraz narychlo povedat v com je problem, musim si pozriet dokumentaciu. Ja som to kedysi s…
wam_Spider007 05.03.2012 16:50
wam_Spider007
no to s tou podmínkou slyším poprvé...na škole jsme měli předminulý semestr databáze a učil nás týpe…
n.u.r.v. 06.03.2012 00:34
n.u.r.v.
ako som pisal, namiesto != by som radsej pouzil dva zobaky <> (nerovna sa). Funguje aj ten tvoj zapi…
wam_Spider007 06.03.2012 10:54
wam_Spider007
to je nesmysl, != je v javě, v c++ apod. <> je v jinejch jazycich. Podle mne je to uplne jedno, zapi… nový
AZOR 06.03.2012 11:55
AZOR
to je vsetko ok, mysql a aj ostatne db systemy podporuju oba zapisy (vynimkou je DB2). Tam ide skor… nový
wam_Spider007 06.03.2012 12:56
wam_Spider007
<> Hlavně vypadá líp, dost se to podobá učetelkám zeměpisu 8-) nový
AZOR 06.03.2012 13:32
AZOR
Zabudni na eventy, triggre a podobné prasačiny. Na toto ti stačí jednoduchý select, ako tu už niekoľ… nový
los 06.03.2012 17:44
los
dobře, jednoduchý select...ok...jsem zvědavej jak selectem budu updatovat tabulku... protože první… nový
n.u.r.v. 08.03.2012 00:47
n.u.r.v.
Prečo by si chcel selectom updatovať tabuľku? Prečo by si chcel vôbec čímkoľvek updatovať tabuľku? V… nový
los 08.03.2012 07:43
los
Ano, právě že to porovnávání dle data mám teď tak udělané - pokud datum počátku hlasování je/bylo a… poslední
n.u.r.v. 08.03.2012 09:52
n.u.r.v.
Los myslí že si selcetneš ty řádky, vytáhneš si to datum a pomocí PHP si to porovnáš a vypíšeš.. má… nový
tomas.kulhanek 08.03.2012 07:53
tomas.kulhanek

Tak jsem zkoušel nastavit ty eventy, ale bohužel to nějak nefunguje-zkoušel jsem různé příklady z netu a event se sice vytvoří, ale už nespustí...

zkusil jsem toto (en tak na zkoušku, bez data apod...):

DELIMITER $$
CREATE
	EVENT `test1`
	ON SCHEDULE EVERY 1 MINUTE STARTS '2011-07-24 02:10:00'
	DO BEGIN
		UPDATE `nazev_databaze`.`ankety` SET `stav` = '1' WHERE `ankety`.`stav` != '1'
	END
$$ DELIMITER ;

zkusil jsem i toto:

CREATE  EVENT test2 
 ON  SCHEDULE AT CURRENT_TIMESTAMP  + INTERVAL  1 MINUTE
 DO 
 UPDATE  nazev_databaze.ankety SET  stav = 1;

a taky nic..event si sedí v databázi a nic nedělá...

Nevíte kde dělám chybu...když totiž rozchodím ty eventy, tak budu mít vyřešený můj problém dokonale...díky za rady

no to s tou podmínkou slyším poprvé...na škole jsme měli předminulý semestr databáze a učil nás týpek z akademie věd a na férovku nás tyto druhy zápisu učil...

a jak se pak mají porovnávat řetězce?

Zítra zkusím vycucat nějaké rady od kolegů ve škole,ale začínám z toho být na prášky...A aby toho nebylo málo, tak jsem dnes hodil ty nové webovky na školní server a zjistil jsem že mi nefunguje upload souborů ani ukládání vygenerovaných souborů (fpdfp)-asi je to na tom servru zakázané nebo co... když jsem zkoušel upload, tak jsem si vypsal chybu (error_reporting(0);) a vypsalo to chybu číslo 22527, tak nevím...3-[

to je nesmysl, != je v javě, v c++ apod. <> je v jinejch jazycich. Podle mne je to uplne jedno, zapisu != stejne jako <> musi rozumet kazdej. Chapal bych kdyby jsi byl proti zapisu ^= /nevim jestli mysql podporuje, oracle ano/ ten moc lidi nezna.

dobře, jednoduchý select...ok...jsem zvědavej jak selectem budu updatovat tabulku...

protože první co mi u obhajoby vytknou je: "Proč při každém přístupu na tuto stránku kontrolujete stav položky v databázi (a případně měníte stav)? Vždyť to zbytečně moc zatěžujete server...nešlo použít něco jiného?"

EDIT:PRávě jsem zjistil, že eventy podporuje databáze myslq od verze 5.1.xxx, ale na mém notebooku i na školní serveru je verze 5.0.9xx, takže nic...takže se mám na co vymluvit a udělám si na to v php funkci...

Prečo by si chcel selectom updatovať tabuľku? Prečo by si chcel vôbec čímkoľvek updatovať tabuľku? Veď v tomto prípade potrebuješ len čítať z tabuľky. A na to je select (prípadne si nad tým môže spraviť view, ale imho v tomto prípade je to zbytočnosť).

Ak by si to obhajoval u mňa, tak prvé čo by som sa spýtal by bolo, prečo si sa rozhodol použiť trigger, event alebo cron. A nech by si odpovedal čokoľvek, už by som si myslel svoje.

Načo tam vôbec potrebuješ stĺpec stav? Veď stav objektu je popísaný tými dátumami platnosti od-do a indikátorom, či bolo hlasovanie predčasne ukončené. Takže v tom selecte nepotrebuješ ani case. Navyše, o reprezentácii stavu textovým reťazcom by sa tiež dalo diskutovať.

Ano, právě že to porovnávání dle data mám teď tak udělané - pokud datum počátku hlasování je/bylo a zároveň datum ukončení bude/je, tak je možné hlasovat...

A ten stav je právě to předčasné ukončení...(předělám na netextový)...sice jsem mohl předčasně ukončit hlasování tak, že bych updatoval konečné datum, jenže já potřebuji aby i po ukončení bylo vidět nastavené původní datum od-do...

A právě jsem si myslel, že když by databáze sama vždy v noci zkontrolovala to rozmezí data a příp.změnila podle toho stav, tak při hlasování by stačilo pro zobrazení jen obyč. select where stav neukončená...a odpadlo by nějaké vyhodnocování apod...

ale ok-nechám to tak jak mám no...když je to lepší...

Zpět do poradny Odpovědět na původní otázku Nahoru