powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите найти глюк в BETWEEN
23 сообщений из 23, страница 1 из 1
Помогите найти глюк в BETWEEN
    #39051935
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемые гуру.
Сложилась ситуация, никак не могу правильно рассчитать формулу.
Сделал календарь событий, все нормально добавляет в базу, время и т.д., вытаскивает результат.
но вопрос вот в чем, не получается правильно сделать (если клиент выбрал одну и туже дату, которая уже имеется в календаре, чтоб он выводил ошибку), данная схема уже практически реализована, но имеется косяк,
Например, если выбрали дату 11.09.2015 15-00 и 11.09.2015 16-00 и второй выбрал дату 11.09.2015 14-00 и 11.09.2015 15-30 то он выводит ошибку, а если выбрали одинаковую дату 11.09.2015 15-00 и 11.09.2015 15-00 то он заносится в базу
вот пример sql запроса
Код: sql
1.
2.
3.
$str_start = date("Y-m-d H:i",strtotime("+1 minutes",strtotime($start)));
$str_end = date("Y-m-d H:i",strtotime("-1 minutes",strtotime($end)));
$sql_check = 'SELECT * FROM events WHERE room = "' . $room . '" AND (start BETWEEN "' . $str_start . '" AND "' . $str_end . '" OR end BETWEEN "' . $str_start . '" AND "' . $str_end . '")';



Спасибо большое заранее
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39051994
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052170
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir http://www.sql.ru/forum/actualsearch.aspx?search=??????????? ??????????&sin=0&st=t&bid=6&a=&ma=0&dt=-1&s=1&so=1 смотрели?
спасибо почитал,но везде точно не сказано как, как будет правильно вставить пересечение дат в мой запрос?
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052456
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, так: where '$start'<=`end` and `start`<= '$end' and '$start' < '$end' ?
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052650
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007Может, так: where '$start'<=`end` and `start`<= '$end' and '$start' < '$end' ?
к сожалению уже делал так раньше, он отказался от этого запроса, не подошел, а можно внутри моего запроса, запихать этот ?
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052652
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atroxCygapb-007Может, так: where '$start'<=`end` and `start`<= '$end' and '$start' < '$end' ?
к сожалению уже делал так раньше, он отказался от этого запроса, не подошел, а можно внутри моего запроса, запихать этот ?О-о-оо... Сам ОН ...

Это сакральные знания, но - не доверяю я вашему божку...
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052686
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007atroxпропущено...

к сожалению уже делал так раньше, он отказался от этого запроса, не подошел, а можно внутри моего запроса, запихать этот ?О-о-оо... Сам ОН ...

Это сакральные знания, но - не доверяю я вашему божку...

спасибо за помощь
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052696
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atroxспасибо за помощь
Нет, вы неверно поняли.

Чем именно не подходит такое условие? Почему ОН отказался от обычного условия пересечения интервалов?
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052721
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007atroxспасибо за помощь
Нет, вы неверно поняли.

Чем именно не подходит такое условие? Почему ОН отказался от обычного условия пересечения интервалов?

из-за того, что делалось ровно наоборот, если стоит с 15:00 по 16:00, а другой выбрал с 15:00 по 16:00, то писал что забронировано ,
а если с 15:00 по 15:30 или 15:00 по 17:00 то уже бронировал на это число, хотя до 16:00 бронь стоит
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052731
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
atrox,

Код: sql
1.
$sql_check = 'SELECT * FROM events WHERE room = "' . $room . '" AND start <= "' . $str_date . '" AND end >= "' . $str_date . '"';



и

Код: sql
1.
$sql_check = 'SELECT * FROM events WHERE (room = "' . $room . '" AND start <= "' . $str_date . '") OR (room = "' . $room . '" AND end >= "' . $str_date. ')"';



не помогли такие запросы тоже
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052734
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atroxCygapb-007пропущено...

Нет, вы неверно поняли.

Чем именно не подходит такое условие? Почему ОН отказался от обычного условия пересечения интервалов?

из-за того, что делалось ровно наоборот, если стоит с 15:00 по 16:00, а другой выбрал с 15:00 по 16:00, то писал что забронировано ,
а если с 15:00 по 15:30 или 15:00 по 17:00 то уже бронировал на это число, хотя до 16:00 бронь стоитНасколько я понял, клиент указывает желаемый интервал бронирования. При этом если на всем интервале нет другого бронирования, то интервал принимается к обслуживанию, иначе выдается сообщение об ошибке.

Так?

Тогда задача - определить наличие пересекающихся с затребованным интервалов (по формуле указанной ранее).
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052746
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007atroxпропущено...


из-за того, что делалось ровно наоборот, если стоит с 15:00 по 16:00, а другой выбрал с 15:00 по 16:00, то писал что забронировано ,
а если с 15:00 по 15:30 или 15:00 по 17:00 то уже бронировал на это число, хотя до 16:00 бронь стоитНасколько я понял, клиент указывает желаемый интервал бронирования. При этом если на всем интервале нет другого бронирования, то интервал принимается к обслуживанию, иначе выдается сообщение об ошибке.

Так?

Тогда задача - определить наличие пересекающихся с затребованным интервалов (по формуле указанной ранее).

все верно,а правильно определить формулу не могу
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052770
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atroxCygapb-007пропущено...
Насколько я понял, клиент указывает желаемый интервал бронирования. При этом если на всем интервале нет другого бронирования, то интервал принимается к обслуживанию, иначе выдается сообщение об ошибке.

Так?

Тогда задача - определить наличие пересекающихся с затребованным интервалов (по формуле указанной ранее).

все верно,а правильно определить формулу не могу
Код: php
1.
2.
3.
4.
5.
6.
$sql_check = "select not exists(
  SELECT * 
  FROM events 
  WHERE room = '" . $room . "' 
    AND '" . $str_date . "<= `start` AND `end` <= "' . $end_date. "'
  ) as Correct";
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052776
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С кавычками немного напутал
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052782
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atrox, а стандартный метод поиска пересечений чем вас не устраивает?
Код: sql
1.
2.
3.
4.
select count(*)
from бронь
where :start <= time_end
 and :stop >= time_start
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052790
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправляюсь:
Код: php
1.
2.
3.
4.
5.
6.
$sql_check = "select not exists(
  SELECT * 
  FROM events 
  WHERE room = " . $room . "
    AND '" . $str_date . "' <= `start` AND `end` <= '" . $end_date. "'
  ) as Correct";
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052797
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опс... Мне стыдно... перекопировал не глядя неверный запрос, да еще и исправлять в нем кавычки полез...

Извиняюсь... :((
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052803
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно же,
Код: php
1.
2.
3.
4.
5.
6.
$sql_check = "select not exists(
  SELECT * 
  FROM events 
  WHERE room = " . $room . "
    AND '" . $str_date . "' <= `end` AND `start` <= '" . $end_date. "'
  ) as Correct";
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052867
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007Конечно же,
Код: php
1.
2.
3.
4.
5.
6.
$sql_check = "select not exists(
  SELECT * 
  FROM events 
  WHERE room = " . $room . "
    AND '" . $str_date . "' <= `end` AND `start` <= '" . $end_date. "'
  ) as Correct";


к сожалению не срабатывает, все время бронирует, на любое время
вот целый код, для целостности картины
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
     $str_start = date("Y-m-d H:i",strtotime($start));
        $str_end = date("Y-m-d H:i",strtotime($end));
        //$sql_check = 'SELECT * FROM wp_events WHERE room = "' . $room . '" AND (start BETWEEN "' . $str_start . '" AND "' . $str_end . '" OR end BETWEEN "' . $str_start . '" AND "' . $str_end . '") AND "'.$start.'"<=`end` AND `start`<= "'.$end.'"';
        $sql_check = "SELECT not exists(SELECT * FROM events WHERE room = " . $room . "AND '" . $str_date . "' <= `end` AND `start` <= '" . $end_date. "') as Correct";
	
        $sql = 'INSERT INTO wp_events (
			start, 
			end, 
			type,
                        room,
                        name) 
			VALUES 
			("' . date("Y-m-d H:i", strtotime($start)) . '",
			"' . date("Y-m-d H:i", strtotime($end)) . '", 
			"' . $type . '","' . $room . '","' . $name . '")';
        $db_check_res = mysql_query($sql_check);
        $row = mysql_fetch_assoc($db_check_res);
        if ($row == false){
    		if(mysql_query($sql)) {
    			//echo mysql_insert_id();
    		}
        }else{
            echo 'Already booked';
        }
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052882
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atrox,

EXISTS всегда возвращает одно значение - да или нет
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052934
atrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007atrox,

EXISTS всегда возвращает одно значение - да или нет

получается он возвращает НЕТ, не равны значения и бронирует
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052984
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atrox,
чтобы ничего не менять в логике - просто получите сами строки:
Код: php
1.
$sql_check = "SELECT 1 FROM events WHERE room = '" . $room . "' AND '" . $str_date . "' <= `end` AND `start` <= '" . $end_date. "'";
...
Рейтинг: 0 / 0
Помогите найти глюк в BETWEEN
    #39052987
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FROM wp_events
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите найти глюк в BETWEEN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]