펜션 예약 또 다른 질문좀 드리겠습니다.^^;; > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

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

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

본문

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

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 번 필드에 작성해 놓았는데 대입이 어렵네요 ^^;

댓글 전체

일단은 금요일을 주말에서 빼고싶으면
// 선택한 일자가 주말(금,토요일)인지를 추출한다 (주말 : 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을 대입해줘야할거 같은뎅
지금 당장 코드가 떠오르지 않네요.
해결하는대로 올릴께요..
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT