RESCHK.php
4.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
//*****************************************************************************
//*
//* プログラム名:施設予約 重複チェック
//* プログラムID:RESCHK.php
//* 機能 :
//* 作成者 :
//*
//*****************************************************************************
header("Content-type: text/html; charset=EUC-JP");
include("include/session_start.inc");
include("include/SessionChk.inc");
$strDBinc="include/dbcon.inc";
include($strDBinc);
//時間不完全時はノーチェック
if($st_hour == "" || $ed_hour == ""){
exit;
}
//入力値
$strDatsS = $st_year."/".$st_mon."/".$st_day;
$strDatsE = $ed_year."/".$ed_mon."/".$ed_day;
$strTimeS = $st_hour.":".sprintf('%02d',((int) $st_minute)).":00";
$strTimeE = $ed_hour.":".sprintf('%02d',((int) $ed_minute)).":00";
$seq = (int) $seq;
//echo $strDatsS."\n";
//echo $strDatsE."\n";
//echo $strTimeS."\n";
//echo $strTimeE."\n";
//該当データ取得(時間完全入力モノ)
$strSQL = "Select * From sisetu_TBL WHERE rsv_no = ".$rsv_no." and ";
$strSQL .= "((rsv_st_date <= '".$strDatsS."' and rsv_ed_date >= '".$strDatsS."') or (rsv_st_date <= '".$strDatsE."' and rsv_ed_date >= '".$strDatsE."')) ";
$strSQL .= "and rsv_st_time <> '' and rsv_ed_time <> ''";
//echo $strSQL."\n";
$objRecSet = pg_exec($strSQL);
if($objRecSet==false){
echo("SQL実行に失敗しました(SELECT)");
exit;
}
//echo pg_numrows($objRecSet)."\n";
if(pg_numrows($objRecSet) > 0){
//入力値の全日付
getDays($type,$strDatsS,$strDatsE,$wday,$eday,$inpDate);
//echo count($inpDate)."\n";
//登録済み抽出
for($i=0;$i<pg_numrows($objRecSet);$i++){
$Data = pg_fetch_object($objRecSet, $i);
//開始日
if($Data->rsv_st_date < $strDatsS){
$strDatsSDB = $strDatsS;
}else{
$strDatsSDB = $Data->rsv_st_date;
}
//終了日
if($Data->rsv_ed_date > $strDatsE){
$strDatsEDB = $strDatsE;
}else{
$strDatsEDB = $Data->rsv_ed_date;
}
unset ($dbDate);
getDays($Data->rev_type,$strDatsSDB,$strDatsEDB,$Data->rev_code,$Data->rev_code,$dbDate);
//echo count($dbDate)."\n";
//echo "Array? ".is_array($dbDate)."\n";
if(is_array($dbDate) === false){
continue;
}
//echo "あらやん!\n";
for($j=0;$j<count($dbDate);$j++){
//echo "dbDate ".$dbDate[$j]."\n";
for($k=0;$k<count($inpDate);$k++){
if($dbDate[$j] == $inpDate[$k] && $Data->seq != $seq){
//DB開始時間≦入力開始時間≦DB終了時間 → DB開始時間<=入力開始時間<DB終了時間
//if(($Data->rsv_st_time <= $strTimeS) && ($strTimeS <= $Data->rsv_ed_time)){
if(($Data->rsv_st_time <= $strTimeS) && ($strTimeS < $Data->rsv_ed_time)){
echo "ERR_OVERLAP";
exit;
}
//DB開始時間≦入力終了時間≦DB終了時間→DB開始時間<入力終了時間<DB終了時間
//if(($Data->rsv_st_time <= $strTimeE) && ($strTimeS <= $Data->rsv_ed_time)){
if(($Data->rsv_st_time < $strTimeE) && ($strTimeE <= $Data->rsv_ed_time)){
echo "ERR_OVERLAP";
exit;
}
//入力開始時間≦DB開始時間≦入力終了時間→入力開始時間≦DB開始時間<入力終了時間
//if(($strTimeS <= $Data->rsv_st_time) && ($Data->rsv_st_time <= $strTimeE)){
if(($strTimeS <= $Data->rsv_st_time) && ($Data->rsv_st_time < $strTimeE)){
echo "ERR_OVERLAP";
exit;
}
//入力開始時間≦DB終了時間≦入力終了時間→入力開始時間<DB終了時間<入力終了時間
//if(($strTimeS <= $Data->rsv_ed_time) && ($Data->rsv_ed_time <= $strTimeE)){
if(($strTimeS < $Data->rsv_ed_time) && ($Data->rsv_ed_time <= $strTimeE)){
echo "ERR_OVERLAP";
exit;
}
}
}
}
//echo count($dbDate);
}
}else{
exit;
}
function getDays($pType,$pDateS,$pDateE,$pWday,$pDay,&$pDate){
list($y1,$m1,$d1)=split("/",$pDateS);
list($y2,$m2,$d2)=split("/",$pDateE);
$t1=mktime(0,0,0,$m1,$d1,$y1);
$t2=mktime(0,0,0,$m2,$d2,$y2);
$dayNum = 1+abs($t1-$t2)/(60*60*24);
if($pType == 0){
for($i=0;$i<$dayNum;$i++){
$pDate[$i] = date("Y/m/d",mktime(0,0,0,$m1,$d1+$i,$y1));
//echo $pDate[$i]."\n";
}
}else if($pType == 1){
$j=0;
for($i=0;$i<$dayNum;$i++){
if(date("w",mktime(0,0,0,$m1,$d1+$i,$y1)) == $pWday){
$pDate[$j] = date("Y/m/d",mktime(0,0,0,$m1,$d1+$i,$y1));
//echo $pDate[$j]."\n";
$j++;
}
}
}else if($pType == 2){
$j=0;
for($i=0;$i<$dayNum;$i++){
if(date("d",mktime(0,0,0,$m1,$d1+$i,$y1)) == $pDay){
$pDate[$j] = date("Y/m/d",mktime(0,0,0,$m1,$d1+$i,$y1));
//echo $pDate[$j]."\n";
$j++;
}
}
}
}
?>