쉽게 생각이 안나네요 이틀정도 고민했는데 휴~~ 공부가 더 필요한가봐요
장비를 신청하는 프로그램을 만들고 있습니다.
장비를 신청을 원하는 날짜와 시간에 이미 다른곳에서 신청했을 경우에는 신청을 못하게 하려고 합니다.
단계 1에서 원하는 날짜와 시간을 입력하게 하면 신청가능한 장비 목록을 화면에 출력하려고 합니다.
![](http://img166.imageshack.us/img166/2971/step1ge8.gif)
사용기간 선택시
하루 일 경우 하루 날짜 정보를 가져옵니다 예) 20081212
일정기간일 경우 시작날짜와 끝나는 날짜를 가져옵니다 예) 20081212 ~ 20081215
정기일 경우 요일을 선택하게 됩니다 예) 월, 화 , 수
그리고 시간을 선택한 후 검색을 누르면 아래쪽에 대여가능한 장비 목록이 나오게 하려고 합니다
대여 테이블에 장비 , 사용기간타입, 사용시간을 가지고 대여가 가능한 장비 목록을 가지고 오려고 합니다.
대여 테이블 구성은 아래와 같습니다
![](http://img156.imageshack.us/img156/129/tablend9.gif)
select 한 결과는 아래와 같습니다.
lendtype 은 day 는 하루대여 days 는 일정기간 every 는 정기 대여를 뜻합니다.
그래서 정기대여일시 date_1는 date("w",mktime(00,00,00,12,12,2008))) 해서 나오는 요일에 따른 숫자로 해서 가져옵니다 예) 월요일 -> 1
그리고 장비(product)은 장비의 고유키값이 입력이 되어집니다.
| 로서 여러 장비 신청시 구분이 되어지고요
이렇게 입력된 장비 테이블에서 신청할때 대여가 가능한 장비 목록들을 가져오는 SQL를 작성하려고 하는데 힘이드네요
제가 한 방법은 일단 장비 테이블에서 모든 장비들을 불러와서
while문으로 돌리면서 장비 고유키값으로 검색을 해보는 방법을 선택했었습니다.
$result = mysql_query(select idx from lend_product order by protype asc, idx asc);
if(mysql_num_rows($result)) {
while($proRow = mysql_fetch_array($result)){
if($lendtype == "day"){
$date = date("w",mktime(00,00,00,substr($date_1,5,2),substr($date_1,6,2),substr($date_1,0,4)));
$sql = SELECT idx FROM lend_list WHERE ( product like '".$proRow[0]."|%' or product like '%|".$proRow[0]."|%' ) ";
$sql .= "and ((date_1 = '20081215' ) or (date_1 <= '20081215' and date_2 <= '20081215') or (date_1 like '%4%') ) ";
$sql .= "and (stime >= '08' and stime <= '15' or etime = '08' ) ";
}elseif($lendtype == "days"){
//
$sql = SELECT idx FROM lend_list WHERE ( product like '".$proRow[0]."|%' or product like '%|".$proRow[0]."|%' ) ";
$sql .= "and ( date_1 = '20081215' or date_1 = '20081216' or date_2 = '20081215' or date_2 = '20081216' or (date_1 > '20081215' and date_2 > '20081216' ) ) ";
$sql .= "and (stime >= '08' and stime <= '15' or etime = '08' ) ";
//정기대여 검색
for($i =$date_1; $i <= $date_2; $i++ ){
$date = date("w",mktime(00,00,00,substr($i,5,2),substr($i,6,2),substr($i,0,4)));
$sql = SELECT idx FROM lend_list WHERE ( product like '".$idx."|%' or product like '%|".$idx."|%' ) ";
$sql .= and date_1 like '%".date("w",$date)."%' and (stime >= '".$stime."' and stime <= '".$etime."' or etime = '".$stime."' )
}
}elseif($lendtype == "every"){
}
}
이렇게 까지 생각해봤는데 잘모르겠어요 ㅠ.ㅠ
sql를 어떻게 구상해야 할까요?
|