RES001-1.php 12.6 KB
<?php 
//*****************************************************************************
//* 
//* プログラム名:施設予約
//* プログラムID:RES001-1.php
//* 機能				:一覧画面
//* 作成者			:
//* 
//*****************************************************************************

header("Content-type: text/html; charset=EUC-JP");
include("include/session_start.inc");
include("include/SessionChk.inc");
include('include/smarty.conf');


include("inc/RES001.inc");

include("inc/header.inc");
$strDBinc="include/dbcon.inc";
include($strDBinc);

//施設情報
$strSQL="Select seq,sisetu_name,disp_rank From mst_sisetu Order By disp_rank";
$objRecSet = pg_exec($strSQL);
if($objRecSet==false){
	echo("SQL実行に失敗しました(SELECT)");
	exit;
}	

	//日付編集
	$youbi=array("日","月","火","水","木","金","土");
	$clender=array("#FDDFFD","#ffffe6","#ffffe6","#ffffe6","#ffffe6","#ffffe6","#CCF8FB");
	$schedule=array("#FDDFFD","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#CCF8FB");
	if ($strwkdate==""){
			$st_date = date("Y/m/d");
			list($st_year,$st_mon,$st_day)=split("/", $st_date);

			$st_sengetu =date("Ymd", mktime (0,0,0,$st_mon-1,$st_day,$st_year));
			$st_sensyu =date("Ymd", mktime (0,0,0,$st_mon,$st_day-7,$st_year));
			$st_kinou =date("Ymd", mktime (0,0,0,$st_mon,$st_day-1,$st_year));
			$st_honjitu =date("Ymd", mktime (0,0,0,$st_mon,$st_day,$st_year));
			$st_raisyu =date("Ymd", mktime (0,0,0,$st_mon,$st_day+7,$st_year));
			$st_ashita =date("Ymd", mktime (0,0,0,$st_mon,$st_day+1,$st_year));
			$st_raigetu =date("Ymd", mktime (0,0,0,$st_mon+1,$st_day,$st_year));
			$strwkdate=$st_honjitu;
	}else{
			$st_date = date("Y/m/d");
			list($st_year,$st_mon,$st_day)=split("/", $st_date);
			$st_honjitu =date("Ymd", mktime (0,0,0,$st_mon,$st_day,$st_year));

			$st_year=substr($strwkdate, 0, 4);
			$st_mon=substr($strwkdate, 4, 2);
			$st_day=substr($strwkdate, 6, 2);
			$st_sengetu =date("Ymd", mktime (0,0,0,$st_mon-1,$st_day,$st_year));
			$st_sensyu =date("Ymd", mktime (0,0,0,$st_mon,$st_day-7,$st_year));
			$st_raisyu =date("Ymd", mktime (0,0,0,$st_mon,$st_day+7,$st_year));
			$st_raigetu =date("Ymd", mktime (0,0,0,$st_mon+1,$st_day,$st_year));
			$st_kinou =date("Ymd", mktime (0,0,0,$st_mon,$st_day-1,$st_year));
			$st_ashita =date("Ymd", mktime (0,0,0,$st_mon,$st_day+1,$st_year));
	}



		//<!--施設予約予定表-->
		$year="";
		for ($intCnt = $st_year-1 ; $intCnt <= $st_year+1 ; $intCnt++) {
				if ($st_year == $intCnt) {
						$year.= "<option value=".$intCnt." selected>".$intCnt."年</option>\n";
				}else{
						$year.= "<option value=".$intCnt.">".$intCnt."年</option>\n";
				}
		}
		$month="";
		for ($intCnt = 1 ; $intCnt <= 12 ; $intCnt++) {
				if ($st_mon == $intCnt) {
					if (strlen($intCnt)==1){
							$month.= "<option value=\""."0".$intCnt."\" selected>".$intCnt."月</option>\n";
					}else{
							$month.= "<option value=".$intCnt." selected>".$intCnt."月</option>\n";
					}

				}else{
					if (strlen($intCnt)==1){
							$month.= "<option value=\""."0".$intCnt."\">".$intCnt."月</option>\n";
					}else{
							$month.= "<option value=".$intCnt.">".$intCnt."月</option>\n";
					}
				}
		}

		//カレンダー表示
		for ($intCnt = 0; $intCnt < 7; $intCnt++) {
			$intday =date("j", mktime (0,0,0,$st_mon,$intCnt+$st_day,$st_year));
			$intYoubi=date("w", mktime (0,0,0,$st_mon,$intCnt+$st_day,$st_year));

                        $chkdate=date("Y/m/d", mktime (0,0,0,$st_mon,$intCnt+$st_day,$st_year));
                        $strHoliday="Select holiday_name from holiday_tbl where holiday_date='$chkdate'";
                        $objHoliday = pg_exec($strHoliday);
			if (pg_numrows($objHoliday)>0){
			  $WeekColor[$intCnt]=$clender[0];
			}else{
   	 		  $WeekColor[$intCnt]=$clender[$intYoubi];
			}

			if(date("Ymd", mktime (0,0,0,$st_mon,$intCnt+$st_day,$st_year)) == date("Ymd")){
				//今日色
				$WeekColor[$intCnt]="#FFFFAA";
			}
			
			$Weekdate[$intCnt]=$intday."日(".$youbi[$intYoubi].")";
		}

		$intMax=pg_numrows($objRecSet);
		for($intCnt = 0; $intCnt < $intMax ; $intCnt++) {
				$Data = pg_fetch_object($objRecSet, $intCnt);
				$naiyou1[$intCnt]=$Data->sisetu_name;
				//20090827 月間スケジュール対応
				$sisetu_seq[$intCnt]=$Data->seq;

				for($intDateCnt = 0; $intDateCnt < 7; $intDateCnt++) {
						//日付
						$setdate =date("Ymd", mktime (0,0,0,$st_mon,$st_day+$intDateCnt,$st_year));
						$intYoubi=date("w", mktime (0,0,0,$st_mon,$st_day+$intDateCnt,$st_year));
						//休日設定
						$chkdate=date("Y/m/d", mktime (0,0,0,$st_mon,$st_day+$intDateCnt,$st_year));
		                                $strHoliday="Select holiday_name from holiday_tbl where holiday_date='$chkdate'";
		                                $objHoliday = pg_exec($strHoliday);
						if (pg_numrows($objHoliday)>0){
						   $objRecHoliday = pg_fetch_object($objHoliday, 0);
						   $HolidayName=$objRecHoliday->holiday_name;
						}else{
						  $HolidayName="";
						}
						$naiyou2[$intCnt][$intDateCnt]="<a href=javascript:res_inp($setdate,$Data->seq,0,$strwkdate);>".
							 											"<img src=image/write2.gif alt=予約 border=0></a><span class=Flowfont>".$HolidayName."</span><BR>";
						//予約情報
						$yoyaku_date=substr($setdate, 0, 4)."/".substr($setdate, 4, 2)."/".substr($setdate, 6, 2);
						$strSQL="Select syain_cd,seq,rsv_st_time,rsv_ed_time,purpose,rev_type,rev_code,del_date ".
										"From sisetu_TBL WHERE rsv_no=$Data->seq and rsv_st_date<='$yoyaku_date' and '$yoyaku_date'<=rsv_ed_date ".
										"ORDER BY rsv_st_time,rsv_ed_time";
						$objRevSet = pg_exec($strSQL);
						if($objRevSet==false){
								echo("SQL実行に失敗しました(SELECT)");
								exit;
						}	
						$intRevMax=pg_numrows($objRevSet);

						for($intData = 0; $intData < $intRevMax ; $intData++) {
								$intset=0;
								$objRevData = pg_fetch_object($objRevSet, $intData);
								if ($objRevData->rev_type==1){
										$intdata=date("w", mktime (0,0,0,$st_mon,$st_day+$intDateCnt,$st_year));
										if ($intdata==$objRevData->rev_code){
											$intset=1;
										}
								}elseif ($objRevData->rev_type==2){
									$intdata =date("j", mktime (0,0,0,$st_mon,$st_day+$intDateCnt,$st_year));
									//if ($intdata==$objRevData->rev_code){
									//	$intset=1;
									//}
									//20090818 月末対応
									if ($objRevData->rev_code == 32){
										if ($intdata == date("t", mktime (0,0,0,$st_mon,$st_day+$intDateCnt,$st_year))){
											$intset=1;
										}
									}elseif ($intdata==$objRevData->rev_code){
										$intset=1;
									}
								}else{
										$intset=1;
								}

								if ($intset==1){
								//開始時刻
								if ($objRevData->rsv_st_time != ""){
									list($rsv_hour_b,$rsv_mini_b)=split(":", $objRevData->rsv_st_time);
									//20091216 施設予約 〜にする
									//$strdata=$rsv_hour_b.":".$rsv_mini_b." ";
									$strdata=$rsv_hour_b.":".$rsv_mini_b."〜";
								}
								else{
									$strdata="";
								}
								//終了時刻
								if ($objRevData->rsv_ed_time != ""){
										list($rsv_hour_e,$rsv_mini_e)=split(":", $objRevData->rsv_ed_time);
										//20091209 施設予約 〜にする
										//$strdata=$strdata."-".$rsv_hour_e.":".$rsv_mini_e;
										if ($objRevData->rsv_st_time != ""){
												$strdata=$strdata.$rsv_hour_e.":".$rsv_mini_e;
										}else{
												$strdata="〜".$strdata.$rsv_hour_e.":".$rsv_mini_e;
										}
								}
								//2009/07/15 福村追加(セレクト8を複写しました)
								//重複チェック
								//データ存在チェック
								$Batting = "";
								if ($objRevData->rsv_st_time != "" && $objRevData->rsv_ed_time != ""){
									//chkRepTime($Data->seq,$objRevData->seq,$yoyaku_date,$objRevData->rsv_st_time,$objRevData->rsv_ed_time,&$pResut);
									//if ($pResut == 1){
									if(checkOverlap($Data->seq, 
													$objRevData->seq, 
													$yoyaku_date, 
													$objRevData->rsv_st_time, 
													$objRevData->rsv_ed_time, 
													$objRevData->rev_code)){
										$Batting = "<SPAN class=Chufont>×</SPAN>";
									}

								}
								$strdata=$Batting.$strdata.$objRevData->purpose;

								//$strdata=$strdata.$objRevData->purpose;

								//登録者名
								if ($PHP_FOLDER!="iss"){
										$strSyainSQL="Select name_kj_sei,name_kj_mei From syain_tbl WHERE syain_cd='$objRevData->syain_cd'";
										$objSyainSet = pg_exec($strSyainSQL);
										if($objSyainSet==false){
											echo("SQL実行に失敗しました(SELECT)");
											exit;
										}	
										$objSyainData = pg_fetch_object($objSyainSet, 0);
										$strdata=$strdata."(".$objSyainData->name_kj_sei.$objSyainData->name_kj_mei.")</li>";
								}
								if (strstr($objRevData->del_date,$yoyaku_date)==FALSE){
										$naiyou2[$intCnt][$intDateCnt].= "<li><a href=javascript:res_inp($setdate,$Data->seq,$objRevData->seq,$strwkdate);>".
																										 "<span class=Normalfont>".$strdata."</span></a>";
										$sql[$intCnt][$intDateCnt]= $objRevData->seq;
								}
						}
				}
			}
		}

//重複チェック関数修正版
function checkOverlap($pRsvNo, $pSeqNo, $pDate, $pS_Time, $pE_Time, $pCode){

	$sArr = split("/", $pDate);
	$wd = date("w", strtotime($pDate));
	
	$strSQL  = "";
	$strSQL .= "SELECT ";
	$strSQL .= " * ";
	$strSQL .= "FROM ";
	$strSQL .= " sisetu_TBL ";
	$strSQL .= "WHERE ";
	$strSQL .= " rsv_no = ".$pRsvNo." AND ";
	$strSQL .= " seq <> ".$pSeqNo." AND ";
	$strSQL .= " rsv_st_date <= '".$pDate."' AND ";
	$strSQL .= " rsv_ed_date >= '".$pDate."' AND ";
	$strSQL .= " (rev_type = 0 OR ";										//←単純予約との重複チェック条件
	$strSQL .= "  (rev_type = 1 AND rev_code = ".$wd.") OR ";				//←毎週予約との重複チェック条件
	$strSQL .= "  (rev_type = 2 AND rev_code = ".intval($sArr[2]).")) ";	//←毎月予約との重複チェック条件
	$objRevSet = pg_exec($strSQL);
	if($objRevSet==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
	}
	$intRevMax=pg_numrows($objRevSet);
	for($intData = 0; $intData < $intRevMax ; $intData++) {
		$objRevData = pg_fetch_object($objRevSet, $intData);
		if($pS_Time < $pE_Time){
			if(($pS_Time != "" && $pE_Time != "") && ($objRevData->rsv_st_time != "" && $objRevData->rsv_ed_time != "")){
				if($objRevData->rsv_st_time <= $pS_Time && $pS_Time < $objRevData->rsv_ed_time){
					//開始時間
					return true;
				}else if($objRevData->rsv_st_time < $pE_Time && $pE_Time <= $objRevData->rsv_ed_time){
					//終了時間
					return true;
				}else if($pS_Time <= $objRevData->rsv_st_time && $objRevData->rsv_st_time < $pE_Time){
					//開始時間
					return true;
				}else if($pS_Time < $objRevData->rsv_ed_time && $objRevData->rsv_ed_time <= $pE_Time){
					//終了時間
					return true;
				}
			}
		}
	}
	return false;
}

	//2009/07/15 福村追加(セレクト8を複写しました)
	//重複チェック関数追加
	function chkRepTime($pRsvNo,$pSeqNo,$pDate,$pS_Time,$pE_Time,&$pResut){
		$pResut = 0;
		$strSQL="";
		$strSQL="Select * ".
						"From sisetu_TBL WHERE rsv_no=$pRsvNo and seq <> $pSeqNo and rsv_st_date>='$pDate' and rsv_ed_date <= '$pDate'";
		$objRevSet = pg_exec($strSQL);
		if($objRevSet==false){
				echo("SQL実行に失敗しました(SELECT)");
				exit;
		}
		$intRevMax=pg_numrows($objRevSet);
		for($intData = 0; $intData < $intRevMax ; $intData++) {
			$objRevData = pg_fetch_object($objRevSet, $intData);
			//DB開始時間≦入力開始時間≦DB終了時間→DB開始時間≦入力開始時間<DB終了時間
			if(($objRevData->rsv_st_time <= $pS_Time) && ($pS_Time < $objRevData->rsv_ed_time)){
				$pResut=1;
			}
			//DB開始時間≦入力終了時間≦DB終了時間→DB開始時間<入力終了時間≦DB終了時間
			if(($objRevData->rsv_st_time < $pE_Time) && ($pE_Time <= $objRevData->rsv_ed_time)){
				$pResut=1;
			}
			//入力開始時間≦DB開始時間≦入力終了時間
			if(($pS_Time <= $objRevData->rsv_st_time) && ($objRevData->rsv_st_time < $pE_Time)){
				$pResut=1;
			}
			//入力開始時間≦DB終了時間≦入力終了時間→入力開始時間<DB終了時間≦入力終了時間
			if(($pS_Time < $objRevData->rsv_ed_time) && ($objRevData->rsv_ed_time <= $pE_Time)){
				$pResut=1;
			}
		}
	}

$o_smarty->assign('year',$year);
$o_smarty->assign('month',$month);
$o_smarty->assign('st_sengetu',$st_sengetu);
$o_smarty->assign('st_sensyu',$st_sensyu);
$o_smarty->assign('st_kinou',$st_kinou);
$o_smarty->assign('st_honjitu',$st_honjitu);
$o_smarty->assign('st_ashita',$st_ashita);
$o_smarty->assign('st_raisyu',$st_raisyu);
$o_smarty->assign('st_raigetu',$st_raigetu);
$o_smarty->assign('WeekColor',$WeekColor);
$o_smarty->assign('Weekdate',$Weekdate);
$o_smarty->assign('naiyou1',$naiyou1);
$o_smarty->assign('naiyou2',$naiyou2);
$o_smarty->assign('strwkdate',$strwkdate);
$o_smarty->assign('calYMD',substr($strwkdate,0,4)."/".substr($strwkdate,4,2)."/".substr($strwkdate,6,2));
$o_smarty->assign('sql',$sql);
//20090827 月間スケジュール対応
$o_smarty->assign('sisetu_seq',$sisetu_seq);

$o_smarty->display('RES001-1.tpl');

?>