Autor | Zpráva | ||
---|---|---|---|
Tirus Profil |
#1 · Zasláno: 30. 11. 2011, 21:45:30
Potřeboval bych nějak udělat kontrolu křížení. Představte si, že máte nějakou akci, která se opakuje každou středu od 20h do 21:30 od 1.11.2011 do 23.12.2011
ta bude v MySQL už uložená a já najednou budu chtít přidat nějakou akci, co bude každou středu od 18:30 do 20h od 20.9.2011 do 6.11.2011 Jak udělat to, abych zkontroloval že se to s něčím nekříží? napadlo mne něco takovéhleho ($od_nove_cas < $do_v_db || $do_nove_cas > $od_v_db) && ($od_nove_datum < $do_v_db_datum || $do_nove_datum > $od_v_db_datum) && $den_nove_v_tydnu = $den_v_db_v_tydnu slo by to tak, nebo má myšlenka je mimo? |
||
okolojdouci Profil * |
#2 · Zasláno: 30. 11. 2011, 22:08:09
Myšlenka je mimo, pokud to míníš tak, že dotazem vytáhneš z tabulky všechny akce a porovnávat je budeš v cyklu pomocí php.
Nakresli si časovou osu a na ní si nasimuluj všechny varianty toho, jak se dvě akce můžou křížit a minout. Pak to přepiš do SQL, jde jen o ty operátory, které tady skládáš v php. Jestli máš tu logiku dobře, to se mi teď zkoumat nechce. |
||
Tirus Profil |
#3 · Zasláno: 30. 11. 2011, 22:10:30
okolojdouci:
díky, sedím tu nad tím skoro 4 hodinky (celkem za dnešek) v php to porovnávat nechci.. tohle je jen nához.. jde mi o to, že když mi to něco z DB vrátí, tak se to s něčím kryje a tak uživateli navrátím, že akce nelze uložit, že se kryje s jinou akcí... |
||
okolojdouci Profil * |
#4 · Zasláno: 30. 11. 2011, 22:16:41
Tirus:
Dělal jsem to dvakrát a vždycky pomohl papír a tužka. Jde jen o porovnání čtyř čísel, resp. o ošetření všech variant, jak dvě dvojice čísel můžou vůči sobě stát. Myslím že to víš, ale nevím, co ti brání v tom napsání. Je to jednodušší, než to po někom cizím kontrolovat. |
||
Tirus Profil |
#5 · Zasláno: 30. 11. 2011, 22:18:17
okolojdouci:
asi blbě chápeš.. ta tužka mne napadla.. už tu mám několik variant a z toho jsem sesmolil ten příklad co je v mém prvním postu a jde mi jen o to, zda by na to někdo nekoukl... nemám to nyní jak otestovat .. a rád bych se pohnul |
||
okolojdouci Profil * |
#6 · Zasláno: 30. 11. 2011, 22:23:27
Tirus:
Aha, tak to jsem opravdu pochopil špatně. |
||
Tirus Profil |
#7 · Zasláno: 30. 11. 2011, 22:26:20
okolojdouci:
je pravda že jsem dřív sem psal snad každou hovadinu, ovšem to jsem se odnačil.. nyní si nad tím raději lámu hlavu sám a pak se raději zeptám zda to dělám správně.. |
||
Tirus Profil |
#8 · Zasláno: 1. 12. 2011, 13:33:11
vyřešeno
SELECT * FROM `web_rent` where ('2012-11-02' <= day_to && '2013-01-02' >= day_from) && ('17:00:00' < time_to && '18:30:00' > time_from) && 'Thursday' = day && place_id = 1 |
||
Časová prodleva: 12 let
|
0