Autor Zpráva
peta
Profil
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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: