염치불구하고 고수님께 체크기능 도움을 요청합니다. 채택완료
염치불구하고 체크기능을 좀 강화시킬려고 도움을 요청해요...
$checkcnt = sql_fetch("select count(*) as cnt from $write_table where tch_id='$tch_id' and Cdate='$Cdate' and Ctime='$Ctime' ");
if($checkcnt[cnt]) {
alert("{$tch_name} 선생님에게 기존 예약된 수업이 있습니다.\\n\\n* 확인 수업일자 : {$Cdate} / {$Ctime} ");
}
위의 소스는 제가 운영하는 화상영어에서 예약을 할때에 기존에 수업이 있는지 없는지를 체크하는 소스입니다.
예약할때 넘어가는 값은 Cdate와 Ctime 그리고 선생님의 정보가 업데이트 파일로 넘어가면 그 선생님에게 기존의 수업이 있는지를 체크하여 있으면 중복됐다고 알려주는 소스입니다.
여기서 체크기능을 강화하기 위하여~~........... 분이 문제입니다. 분이요~~~
예약할때 넘어가는 값이 하나 더 있습니다.수업시간이죠.. 그러니까 몇분을 수업하는 건지.. 몇분이 넘어갑니다. 다시말하면 형식이 16-02-01 18:00 20min 이 넘어가죠..
그 넘어가는 변수값은 $Cmin 입니다.
위의 소스는 수업시작만 체크를 하는 거죠.. 만약에 해당 샘이 18:00부터 20분간이라면 18:00~18:20 그러니까 끝나는 시간까지는 어랏트를 보여줘야 되나든 거죠..
신규 예약의 Cmin 20분이 입력되었다고 가정하면,
Ctime이 18:00 부터 18:20분까지의 값이 입력이 되면 체크를 해서 중복이 되었다고 메세지를 뿌려주는게 맞는것 같습니다.
//입력폼에서 입력되어 넘어오는 값
$Cdate ='16-02-01';
$Ctime = '18:00';
$Cmin = '20';
//수업날짜 형식은 16-02-01 수업분은 18:00 이니까
$start_time = $Cdate." ".$Ctime;
//끝나는 시간은
$end_time = date("y-m-d H:i", strtotime("$start_time + $Cmin min"));
시작과 끝의 변수는 찾겠는데요.. start_time과 end_time 안에 입력값이 포함된다면 체크하려 하려면 어떻게 해야하는지.. 어떤 함수를 써야하는지....
고수님께 여쭤봅니다.
감사합니다.
답변 2개
조회할 대상 필드가 datetime 형식이고 하나의 필드로 이루어져있나요?
아니면 날짜필드따로 시간필드가 따로되어있나요.
보통 datetime 테이블의경우 between을 많이 사용하는데 between도 mysql 의 하나의 함수이므로
데이터가 많을시 그닥 가벼운 녀석은 아닙니다.
둘다 알려드려 보자면.
select * from date_table
where date_fld between '2016-01-01 12:00' AND '2016-01-01 15:00'
or
select * from date_table
where date_fld >= '2016-01-01 12:00' AND date_fld <= '2016-01-01 15:00'
//입력폼에서 입력되어 넘어오는 값
$Cdate ='16-02-01';
$Ctime = '18:00';
$Cmin = '20';
//수업날짜 형식은 16-02-01 수업분은 18:00 이니까
$start_time = $Cdate." ".$Ctime;
//끝나는 시간은
$end_time = date("y-m-d H:i", strtotime("$start_time + $Cmin min"));
$Etime = date("H:i", strtotime("$start_time + $Cmin min"));
//16년 02월 01일 중 Ctime 이 $Ctime 보다 같거나 크며 $Etime 보다 작거나 같은걸 셀렉트
$checkcnt = sql_fetch("select count(*) as cnt from $write_table where tch_id='$tch_id' and Cdate='$Cdate' and (Ctime>='$Ctime' and Ctime<='$Etime') ");
만약 필드형식 차이로 (문자열등) 정상적인 동작이 안된다면
SUBSTRING_INDEX 함수로 특정문자열을 날린후 하셔도 됩니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인