테스트 사이트 - 개발 중인 베타 버전입니다

펜션 예약 또 다른 질문좀 드리겠습니다.^^;;

앞전에 펜션에 관해서 질문 했었는데 이번엔 또 다른 질문좀 드릴께요 ^^;;

http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=95828&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%C6%E6%BC%C7&sop=and


원본은 청춘 불안정님

http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=61832&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%C6%E6%BC%C7&sop=and&spt=-2917&page=1

이 스킨을 받아서 현재 준성수기 까지 요금을 적용하고 테스트 중인데 ..
준성수기 요금까지 적용 완료 하였는데 한가지 더 궁금해서요 ..
보면 추가 인원당 요금을 받는게 있습니다. 근데 이게 성수기던 아니던 추가 요금이 동일한데 ..

그래서 성수기와 비성수기 추가 요금을 다르게 만들었습니다. 기존에 $write['wr_8']에
추가 요금을 받았는데 성수기 비성수기로 나누워 성수기엔 추가요금 $write['wr_8']
비성수기 추가 요금 $write['wr_13'] 이렇게 받았는데 보면



<?php

// 스킨파일은 단독으로 실행할 수 없다
if(defined('_GNUBOARD_') == false)
{
exit('함수파일은 단독으로 실행할 수 없습니다.');
}

// 목록화면을 위한 관리자 인증세션을 저장한다
if($type == 'true')
{
$_SESSION['admin'] = true;
goto_url($g4['bbs_path'] . '/board.php?bo_table=' . $bo_table);
}

// 달력화면을 위한 관리자 인증세션을 삭제한다
if($type == 'false')
{
unset($_SESSION['admin']);
goto_url($g4['bbs_path'] . '/board.php?bo_table=' . $bo_table);
}

// 버튼의 유형을 정의한다 (달력보기 or 목록보기)
if($is_admin && $_SESSION['admin'])
{
$BUTTON = "<img src=\"{$board_skin_path}/img/b_list.gif\" alt=\"목록보기\" />";
}
else
{
$BUTTON = "<img src=\"{$board_skin_path}/img/b_calendar.gif\" alt=\"달력보기\" />";
}

// 객실정보게시판이 정의되지 않았다면 실행을 중지한다
$OBJECT = sql_fetch("SELECT * FROM {$g4['board_table']} WHERE bo_table = '{$board['bo_1']}'");
if(isset($OBJECT['bo_table']) == false)
{
alert('객실정보게시판이 정의되지 않았습니다.');
}

// 필요한 변수값이 정의되지 않았다면 기본값으로 설정한다
if((int)$board['bo_3'] < 0)
{
$board['bo_3'] = 0;
}
if((int)$board['bo_4'] < 1)
{
$board['bo_4'] = 90;
}
if((int)$board['bo_5'] < 1)
{
$board['bo_5'] = 10;
}
if((int)$board['bo_6'] < 1)
{
$board['bo_6'] = $board['bo_3'];
}

// 예약내역삭제일이 경과한 미입금 예약목록은 삭제한다
$result = sql_query("SELECT wr_id FROM {$write_table} WHERE wr_last < DATE_SUB(now(), INTERVAL {$board['bo_6']} DAY) AND wr_7 = 'F'");
while($row = sql_fetch_array($result))
{
sql_query("DELETE FROM {$write_table} WHERE wr_parent = '{$row['wr_id']}'");
sql_query("DELETE FROM {$g4['board_new_table']} WHERE bo_table = '{$bo_table}' AND wr_parent = '{$row['wr_id']}'");
sql_query("UPDATE {$g4['board_table']} SET bo_count_write = bo_count_write - 1 WHERE bo_table = '{$bo_table}'");
}

// 예약이 가능한 일자를 추출하여 선택박스로 출력한다
function optionDate($select = null)
{
global $g4, $board;
$arr = array('0' => '(월)', '1' => '(화)', '2' => '(수)', '3' => '(목)', '4' => '(금)', '5' => '(토)', '6' => '(일)');
for($i = $board['bo_3']; $i < $board['bo_4']; $i++)
{
$date = sql_fetch("SELECT '{$g4['time_ymd']}' + INTERVAL {$i} DAY AS this");
$week = sql_fetch("SELECT weekday('{$date['this']}') AS this");
echo "<option value=\"{$date['this']}\"";
if($date['this'] == $select)
{
echo ' selected="selected"';
}
echo ">{$date['this']} {$arr[$week['this']]}</option>";
}
return;
}

// 숙박이 가능한 일자를 추출하여 선택박스로 출력한다
function optionStay($max)
{
for($i = 1; $i <= $max; $i++)
{
$var = $i + 1;
echo "<option value=\"{$i}\">{$i}박 {$var}일</option>";
}
return;
}

// 숙박이 가능한 인원을 추출하여 선택박스로 출력한다
function optionPerson($min, $max)
{
for($i = $min; $i <= $max; $i++)
{
echo "<option value=\"{$i}\">{$i}명</option>";
}
return;
}

// 선택한 일자가 성수기인지를 추출한다 (성수기 : 1000, 비성수기 : 2000)
function getSeason($select)
{
global $board;
$result = 2000;
$var = substr($select, 5, 5);
$arr = explode('|', $board['bo_2']);
$max = count($arr);
for($i = 0; $i < $max; $i++)
{
list($open, $close) = explode('~', $arr[$i]);
if($open <= $var && $var <= $close)
{
$result = 1000;
break;
}
}
$arr = explode('|', $board['bo_10']);
$max = count($arr);
for($i = 0; $i < $max; $i++)
{
list($open, $close) = explode('~', $arr[$i]);
if($open <= $var && $var <= $close)
{
$result = 3000;
break;
}
}

return $result;
}

// 선택한 일자가 주말(금,토요일)인지를 추출한다 (주말 : 1000, 주중 : 2000)
function getWeek($select)
{
list($var) = mysql_fetch_array(sql_query("SELECT weekday('{$select}')"));
if($var == 4 || $var == 5)
{
$result = 1000;
}
else
{
$result = 2000;
}

//기타 주말로 편입될 날짜 적기(2010년도)
//if($select == "2010-07-26" or $select == "2010-07-27" or $select == "2010-07-28" or $select == "2010-07-29" or $select == "2010-08-01" or $select == "2010-08-02" or $select == "2010-08-03" or $select == "2010-08-04" or $select == "2010-08-05" or $select == "2010-08-08" or $select == "2010-09-20" or $select == "2010-09-21" or
//$select == "2010-09-22")
//{
//$result = 1000;
//}

return $result;
}

// 선택한 일자의 이용요금을 추출한다 (이용요금을 추출할 수 있는 테이블의 필드명을 리턴한다)
function getPrice($select)
{
$arr = array(
'1000' => array('1000' => 'wr_7', '2000' => 'wr_6'),
'2000' => array('1000' => 'wr_5', '2000' => 'wr_4'),
'3000' => array('1000' => 'wr_12', '2000' => 'wr_11')

);
$season = getSeason($select);
$week = getWeek($select);
$result = $arr[$season][$week];
return $result;
}

// 인원별, 기간별 이용요금을 산출한다
function getTotal($wr_id, $select, $stay, $person)
{
global $g4, $board;
$result = 0;
$write = sql_fetch("SELECT * FROM {$g4['write_prefix']}{$board['bo_1']} WHERE wr_id = '{$wr_id}'");
for($i = 0; $i < $stay; $i++)
{
list($date) = mysql_fetch_array(sql_query("SELECT '{$select}' + INTERVAL {$i} DAY"));
$field = getPrice($date);
$result += $write[$field];
}
$result += (($person - $write['wr_2']) * $write['wr_8'] * $stay);
return $result;
}

// 선택일자에 예약된 객실의 개수를 산출한다
function getRoom($day, $number)
{
global $class, $room;
$result = 0;
$max = count($class[$number]);
for($i = 0; $i < $max; $i++)
{
$var = $class[$number][$i];
$result += count($room[$day][$var]);
}
return $result;
}

// 문자메시지를 전송합니다 (아이코드 클래스)
function SMS($message, $receive = null)
{
global $board;
list($id, $password) = explode('|', $board['bo_8']);
list($phone, $mobile) = explode('|', $board['bo_9']);
if(isset($receive) == false)
{
$receive = $mobile;
}
$SMS = new ICODE;
$SMS -> Connect($id, $password);
$SMS -> Add($phone, $receive, $message);
$SMS -> Send();
return;
}

function BLANK($string, $size)
{
for($i = 0; $i < $size; $i++)
{
$string .= ' ';
}
$result = substr($string, 0, $size);
return $result;
}

class ICODE
{
var $ID;
var $PASSWORD;
var $SERVER;
var $PORT;
var $DATA;

function Connect($id, $password)
{
$this -> ID = BLANK($id, 10);
$this -> PASSWORD = BLANK($password, 10);
$this -> SERVER = '211.172.232.124';
$this -> PORT = rand(7192, 7195);
return;
}

function Add($send, $mobile, $message)
{
$send = str_replace('-', null, $send);
$send = BLANK($send, 33);
$mobile = str_replace('-', null, $mobile);
$mobile = BLANK($mobile, 11);
$message = stripslashes($message);
$message = BLANK($message, 80);
$this -> DATA = '01144 ' . $this -> ID . $this -> PASSWORD . $mobile . $send . $message;
return;
}

function Send()
{
$fgets = null;
$fsockopen = fsockopen($this -> SERVER, $this -> PORT);
fputs($fsockopen, $this -> DATA);
while(isset($fgets) == false)
{
$fgets = fgets($fsockopen, 30);
}
fclose($fsockopen);
$result = substr($fgets, 0, 19);
$key = '0223 00' . substr($this -> DATA, 26, 11);
$this -> DATA = null;
if($result != $key)
{
return false;
}
return true;
}
}

?>






위의 소스에서 해결을 해줘야 하는거 같은데 ..
여기서 혹시 성수기 추가 요금을 산정하는거 같습니다.
그렇다면 혹시 게시판 설정에서 2에 작성한 성수기날짜와 그렇지 않은 날짜의 추가인원
요금을 다르게 반영 할 수 있나요 ? ^^;;
즉 성수기 인원당 추가 요금은 여분필드 wr_8에 작성되어 있고 비성수기 인원 추가 요금은
wr_13 번 필드에 작성해 놓았는데 대입이 어렵네요 ^^;

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

원하시는 답변이 아니라서 죄송합니다.ㅠㅠ
일단은 금요일을 주말에서 빼고싶으면
// 선택한 일자가 주말(금,토요일)인지를 추출한다 (주말 : 1000, 주중 : 2000)
function getWeek($select)
{
list($var) = mysql_fetch_array(sql_query("SELECT weekday('{$select}')"));
if($var == 4 || $var == 5)
{
$result = 1000;
}
else
{
$result = 2000;
}

이 소스에서
if($var == 4 || $var == 5)
를 if($var == 5)
이렇게 하면 토요일만 적용될거 같구요..

성수기,비성수기 구분하여 추가요금을 받으려면
전체 요금을 구하는
$result += (($person - $write['wr_2']) * $write['wr_8'] * $stay);
소스에서 if 문으로 성수기,비수기를 구분하여 wr_8과 wr_13을 대입해줘야할거 같은뎅
지금 당장 코드가 떠오르지 않네요.
해결하는대로 올릴께요..

게시글 목록

번호 제목
284438
284437
284435
284430
284420
284417
284409
284401
284399
284397
284380
284378
284371
284370
284366
284364
284360
284357
284355
284354