Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 4. 1. 2008, 13:42:08
Mam databazi, ktera ma udaje
od, do, vlozil_kdo, vlozil_kdy, ... Potreboval bych podminku, ktera mi zjisti, zda je dany cas jiz obsazen ci nikoliv. Mam toto: Z databaze vytahnu vsechny rezervace a pro kazde z nich projdu vsechny rezervace a kolizni vypisi. v PHP $x, $y ... od-do cas novy $a, $b ... od-do cas kontrolovany z databaze if (($a<$x && $x<$b) || ($a<$y && $y<$b) || ($x<$a && $a<$y) || ($x<$b && $b<$y)) {return false;} Totez delam v PHP s MySQL " ($x<`od` AND `od`<$y) OR ($x<`do` AND `do`<$y) OR (`od`<$x AND $x<`do`) OR (`od`<$y AND $y<`do`) "; Funguje to skoro dokonale, az na to, ze by mohl nekdo rezervovat stejny cas jako nekdo jiny: $a = $x nebo $b = $y Problem je, ze kdyz umistim rovnitka, tak mi to zobrazi komplet vsechny zaznamy jako kolizni. Tak to reseni radeji neuvadim, aby je nekdo nepouzil. Zkousel jsem i pridat 30s a vysledek je stejny. Jedna se o rezervaci rozvrhu, takze jsou povolene kombinace navazujici na sebe. Takze by mela byt nejaka rovnitka vsude. cili: - rezervace muze navazovat, ale nesmi se kryt s jinou - kryti je, kdyz jeden z casu nove_rezervace je v intervalu nejake hotove_rezervace - nebo prekryva celou tuto hotovou_rezervaci, tj. hotova_rezervace nesmi mit ani jeden cas v intervalu nove_rezervace Ma nekdo nejake reseni, napad? Delam neco spatne? --- mam tu i jine reseni, ktere sesmolil predchudce, ktere je chybne vice: $result1 = sq($dotaz1); // a vypiseme jej. while ($row = mysql_fetch_array($result1)) { if ($row["do"]> $t1 and $row["od"] <= $t1) { $overeno = False; // od je v hledanem intervalu, v nove vytvarenem casovem intervalu jiz zacina jina hodina } if ($row["do"]>= $t2 and $row["od"] < $t2) { $overeno = False; // do je v hledanem intervalu, v nove vytvarenem casovem intervalu jiz konci jina hodina. } if ($row["od"]>=$t1 and $row["do"]<=$t2) { $overeno = False; // testovany interval t1,t2 jiz obsahuje jiny interval ... problem dela hlavne podminka: ($row["od"]>=$t1 and $row["do"]<=$t2) ... ktera takhle hromadne nefunguje, ale rozepsana ano, coz mi prijde velice zvlastni |
||
Časová prodleva: 16 let
|
0