Parcomers Ответов: 1

Условная дата, совпадающая


Я пытаюсь реализовать перекрывающееся время для преподавательской и учебной деятельности. Я создал таблицу с именем order_learn, содержимое которой таково
id (int, auto increment), 
id_user (varchar), 
material_id (varchar), 
start_periode (date), 
end_periode (date), 
generation (varchar), 
totalday (varchar), 
remarks (text).


студент может взять любой предмет, часы обучения которого определяются start_period (дата) и end_periode (дата), generation (varchar).

которые учащимся не разрешается сдавать по предметам, совпадающим с другими уроками (перекрываются по датам урока).
id id_user material_id start_periode end_periode generation totalday 
1     2       1        03/01/2017     03/13/2017     I         10 ....etc


из приведенных выше данных видно, что id_user принимает 2 предмета с одинаковым временем, что не должно быть разрешено системой позже, если только расписание урока не находится во втором поколении со временем реализации выше 13.03.2017.

Вопросы:
1. Как я могу сделать условие, если студент хочет взять 3 предмета, время которых, безусловно, не перекрывается на основе заранее определенного графика (условия)?
2. должно ли это перекрытие быть сделано на Javascript-части события on load или перед добавлением записи?
3. Как написать сценарий?

Итак, мой вопрос: за вашу помощь я благодарю вас.

Что я уже пробовал:

$strSQLExists="select * from belanja_mapel where 
id_peserta='".$values['id_peserta']."' 
and id_mapel='".$values['id_mapel']."' 
and angkatan='".$values['angkatan']."' 
and ((periode_awal > @periode_awal and periode_akhir > @periode_awal) 
OR (periode_awal < @periode_akhir AND periode_akhir >= @periode_akhir))";
$rsExists = db_query($strSQLExists,$conn);
$data=db_fetch_array($rsExists);
if($data)
			{
				$message = "Overlap";
        return false;
			}
			else
			{
				$message = "Execute";
				return true;
}

1 Ответов

Рейтинг:
1

Maciej Los

Цитата:
1. Как я могу сделать условие, если студент хочет взять 3 предмета, время которых, безусловно, не перекрывается на основе заранее определенного графика (условия)?
2. должно ли это перекрытие быть сделано на Javascript-части события on load или перед добавлением записи?
3. Как написать сценарий?


Я бы предложил это сделать создание хранимой процедуры[^Внутри него вы должны проверить, не перекрывается ли предметное время с заранее заданным расписанием. Как же так?
Проверьте перекрытие диапазонов дат в MySQL[^]
mysql - Поиск перекрывающихся строк (дата/время) в одной таблице[^]

Вот идея, как вызвать хранимую процедуру из PHP-кода:
PHP: хранимые процедуры - руководство пользователя[^]
Как вызвать хранимую процедуру MySQL из PHP-кода?[^]