Страница 1 из 1

Ajax Mysql запрос

Добавлено: 30 сен 2020, 09:00
helgsoft
Добрый день! Есть задача , в учебном центре при составлении расписания занятий должна проводиться проверка занят ли указанный специалист в указанном промежутке времени , т.е на форме есть дата время начала занятия , радио кнопки с выбором продолжительности занятия, так же есть на форме поле , которое динамически формирует время окончания занаятия. Есть запрос
$spec = [590];
$date = [586];
$value = "!!! В указанное время специалист занят !!!";
$value1 = "Специалист свободен";

if($spec > 0) {
$spec_query = db_query("select * from app_entity_54 where FROM_UNIXTIME(field_597,'%Y-%m-%d %H:%i')=FROM_UNIXTIME([586],'%Y-%m-%d %H:%i') AND FROM_UNIXTIME(field_697,'%Y-%m-%d %H:%i')=FROM_UNIXTIME([684],'%Y-%m-%d %H:%i') AND field_590 = [590]",false);

if($spec = db_fetch_array($spec_query)){
echo '<b style="color:red">' . $value . '</b>';
}else{
echo '<b style="color:green">' . $value1 . '</b>';
}
}
в запросе происходит сравнение даты начала и окончания начала занятий полей на форме и в базе и так же фио введенного преподавателя в поле формы и базы. Но если например занятие начинается в 11.30 и заказнчивается в 12.00 и специалист уже занят в указанное время, то ответ получаю занят как и должно быть, если ставлю время начала 11.35 , то получаю что специалист свободен, хотя нужно чтобы было занят, так как он занят с 11.30 до 12.00 Я понимаю, что не правильно построен запрос, что он сравнивает дату начала и окончания а не промежуток, здесь наверно правильно было поставить between чтобы выбирать данные за промежуток времени, но не знаю как правильно его сформировать. Документацию так же смотрел, пример для аякс запроса ,но непонял как сделать. Поэтому знающих прошу помочь правильно составить запрос

Re: Ajax Mysql запрос

Добавлено: 30 сен 2020, 09:52
support
Вместо равенства поставьте >= и <=

Re: Ajax Mysql запрос

Добавлено: 04 окт 2020, 10:07
helgsoft
Спасибо. Но всеравно не получается построить правильно запрос, сейчас все время показывает, что специалист занят, вот такая сейчас структура поля аякс запрос
$spec = [590];
$value = "!!! В указанное время специалист занят !!!";
$value1 = "Специалист свободен";

if($spec > 0) {
$spec_query = db_query("select field_590 from app_entity_54 where field_591 in (1, 3) AND FROM_UNIXTIME(field_597,'%Y-%m-%d %H:%i')>=FROM_UNIXTIME([586],'%Y-%m-%d %H:%i') AND FROM_UNIXTIME(field_697,'%Y-%m-%d %H:%i')<=FROM_UNIXTIME([684],'%Y-%m-%d %H:%i')",false);

if($spec = db_fetch_array($spec_query)){
echo '<b style="color:red">' . $value . '</b>';
}else{
echo '<b style="color:green">' . $value1 . '</b>';
}
}
где поле field_590 это поле специалиста в базе , оно же поле с типом пользователи в структуре, может я не правильно указваю это поле ? сейчас у меня получается запрос проверяет время, без привязки специалиста к конкретному времени, т.е если указанные промежуток времени есть в базе, значит занято, а каким специалистом получается не важно. Как сделать чтобы запрос сравнивал значения поля специалиста со значением выбранном из списка поля с типом пользователи на форме с полем , которое есть в базе , в указанные промежуток времени?

Re: Ajax Mysql запрос

Добавлено: 06 окт 2020, 23:28
helgsoft
если я строю запрос к той же таблице, в которую добавляю данные у меня будет работать вообще?

Re: Ajax Mysql запрос

Добавлено: 07 окт 2020, 04:11
support
Должен работать.

Re: Ajax Mysql запрос

Добавлено: 07 окт 2020, 08:41
helgsoft
Я не понимаю как правильно построить запрос. У меня есть три поля в форме, это дата/время начала занятия, дата/время окончания занятия (формируется динамически при помощи поля Ajaх запрос, к полю дата время начала занятия прибавляется необходимое количество минут, логичнее наверно это было сделать при помощи поля JS формула, но я не понял как) и есть поле пользователи Специалист, далее я хочу при помощи запроса проверить есть ли соответсвие введеным значенимя в форме специалист, дата начала и окончания с соответсвующими значениями в этой таблице , в которую происходит дабовление текущей записи, если есть соответвие , то значит специалист занят, если нет, то свободен и можно добавлять запись. Пример запроса приведен выше, как я понимаю запрос должен сравнить все существующие значения в базе с введенными в форме. Но получается, если например сегодня занятие у Иванова с 13.00 до 13.30 , то я буду получать всегда занято, даже если я на это время поставлю другого преподавателя в это время, получается что мой запрос проверяет только время , если указанный промежуток времени занят, то занято и не важно какой преподаватель в это время записан, а нужно если я ввел Иванова с 13.00 до 13.30 и у меная форме появилось занят и я ввожу например Петрова, у которого нет занятий в это время , мне на форме появлялось сообщение свободен , как это сделать?

Re: Ajax Mysql запрос

Добавлено: 07 окт 2020, 11:27
support
Я сейчас в отъезде. На следующей неделе помогу вам с запросом. Напомните.

Re: Ajax Mysql запрос

Добавлено: 07 окт 2020, 11:37
helgsoft
ок, спасибо