객실 예약 도움 부탁드립니다.
본문
자동합산 부분이 안되는데 어떻게 해야될지 좀 힘드네요ㅠ
function movePage(select)
{
if(select)
{
document.location.replace("?bo_table=" + g5_bo_table + "&select=" + select);
}
else
{
window.alert("이용할 수 없는 예약일자를 선택하였습니다.");
}
return;
}
function all_checked(sw)
{
var f = document.fboardlist;
for(var i = 0; i < f.length; i++)
{
if(f.elements[i].name == "chk_wr_id[]") f.elements[i].checked = sw;
}
return;
}
function check_confirm(str)
{
var f = document.fboardlist;
var chk_count = 0;
for(var i = 0; i < f.length; i++)
{
if(f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked) chk_count++;
}
if(!chk_count)
{
alert(str + "할 예약내역을 선택하세요.");
return false;
}
return true;
}
function select_delete()
{
var f = document.fboardlist;
str = "취소";
if(!check_confirm(str)) return;
if(!confirm("선택한 예약내역을 정말로 "+str+"하시겠습니까?")) return;
f.action = "./delete_all.php";
f.submit();
}
function select_copy(sw)
{
var f = document.fboardlist;
if(sw == "copy") str = "복사";
else str = "이동";
if(!check_confirm(str)) return;
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
f.sw.value = sw;
f.target = "move";
f.action = "./move.php";
f.submit();
}
function selectFinish()
{
var f = document.fboardlist;
var str = "완료";
if(!check_confirm(str)) return;
if(!confirm("선택한 내역을 정말로 예약완료로 처리하시겠습니까?")) return;
f.sw.value = "true";
f.action = g5_bbs_skin_url + "/finish.control.php";
f.submit();
}
function checkFinish(type, page)
{
if(type == "T")
{
window.alert("해당내역은 이미 예약완료로 처리되었습니다.");
}
else
{
if(window.confirm("해당내역을 예약완료로 처리하시겠습니까?") == true)
{
document.location.replace(page);
}
}
return;
}
function checkPrice(wr_id)
{
var select = document.forms["write"]["select"].value;
var use = document.forms["write"]["use[" + wr_id + "]"].value;
var stay = document.forms["write"]["stay[" + wr_id + "]"].value;
var person = document.forms["write"]["person[" + wr_id + "]"].value;
var BBQ = document.forms["write"]["BBQ[" + wr_id + "]"].value;
if(use)
{
window.alert("선택하신 객실은 예약이 불가능합니다.");
return false;
}
var request = create_request();
request.onreadystatechange = function()
{
if(request.readyState == 4)
{
if(request.status == 200)
{
document.getElementById("price[" + wr_id + "]").innerHTML = request.responseText;
checkTotal();
}
else
{
window.alert("프로그램 오류가 발생하였습니다.");
}
}
}
request.open("post", g5_bbs_skin_url + "/check.ajax.php", true);
request.setRequestHeader("content-type", "application/x-www-form-urlencoded");
request.send("bo_table=" + g5_bo_table + "&wr_id=" + wr_id + "&select=" + select + "&stay=" + stay + "&person=" + person + "&BBQ=" + BBQ );
return;
}
function checkTotal()
{
var total = 0;
var result = 0;
var form = document.getElementById("mara_write");
var max = form.length;
for(var i = 0; i < max; i++)
{
if(form.elements[i].checked == true)
{
if(form.elements[i].name == "room[]")
{
var wr_id = form.elements[i].value;
var price = document.getElementById("price[" + wr_id + "]").innerHTML.replace(/,/g, "");
total += parseInt(price);
result++;
}
if(form.elements[i].name == "room2[]")
{
var wr_id = form.elements[i].value;
var price = document.getElementById("price[" + wr_id + "]").innerHTML.replace(/,/g, "");
total += 30000;
result++;
}
}
}
document.getElementById("total").innerHTML = getComma(total);
return result;
}
function checkWrite()
{
if(checkTotal() == 0)
{
window.alert("예약할 객실을 하나 이상 선택해주세요.");
return false;
}
var phone = document.forms["write"]["wr_homepage"].value.split("-");
var pattern = /^[0-9]{3,4}-[0-9]{4}$/;
var array = new Array("02", "031", "032", "033", "041", "042", "043", "051", "052", "053", "054", "055", "061", "062", "063", "064", "010", "011", "016", "017", "018", "019");
var max = array.length;
for(var i = 0; i < max; i++)
{
if(array[i] == phone["0"])
{
break;
}
}
if(max == i || pattern.test(phone["1"] + "-" + phone["2"]) == false)
{
window.alert("연락처가 올바른 형식이 아닙니다.");
document.forms["write"]["wr_homepage"].focus();
return false;
}
if(window.confirm("위의 선택정보로 예약을 진행하시겠습니까? ") == false)
{
return false;
}
return;
}
function getComma(string)
{
var result = string.toString();
var pattern = new RegExp("(-?[0-9]+)([0-9]{3})");
for(var i = 0; i < 9; i++)
{
if(pattern.test(result))
{
result = result.replace(RegExp.$1, RegExp.$1 + ",");
}
}
return result;
}
이게 스크립트인데 여기서 체크박스와 셀렉박스 가격을 제어하더군요....
<?php
// 스킨파일은 단독으로 실행할 수 없다
if(defined('_GNUBOARD_') == false)
{
exit('스킨파일은 단독으로 실행할 수 없습니다.');
}
?>
<script>
var g5_bbs_skin_url = "<?php echo $board_skin_url; ?>";
</script>
<script src="<?php echo $board_skin_url; ?>/script.js"></script>
<link rel="stylesheet" href="<?php echo $board_skin_url; ?>/style.css">
<form id="mara_write" name="fwrite" method="post" action="<?php echo G5_BBS_URL; ?>/write_update.php" enctype="multipart/form-data" onsubmit="return checkWrite(this);" style="width:<?php echo $width; ?>;">
<input type="hidden" name="wr_subject" value="tmp_text">
<p>
<input type="hidden" name="w" value="<?php echo $w; ?>">
<input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>">
</p>
<h2 class="guide"><span></span>이용안내</h2>
<ol class="explain">
<li>인터넷예약이 가능한 기간은 <strong><?php echo $date['min']; ?>부터 <?php echo $date['max']; ?>까지</strong>이며, 그 외의 기간은 전화로 문의해주세요.</li>
<li>1회 예약시 숙박이 가능한 기간은 <strong>최대 <?php echo $board['bo_5']; ?>박 <?php echo $board['bo_5'] + 1; ?>일</strong>이며, 그 이상의 기간은 전화로 문의해주세요.</li>
<li>선택한 숙박일자에 이용할 수 없는 객실은 선택할 수 없거나 숙박기간이 조정되어 보여질 수 있습니다.</li>
<li>예약신청이 완료된 후 <strong><?php echo $board['bo_6']; ?>일 이내에 입금</strong>이 확인되지 않으면 별도의 확인절차없이 예약은 취소됩니다.</li>
<li>무통장입금 계좌번호안내 : <?php echo $board['bo_10']; ?></li>
<li><span lang="EN-US" xml:lang="EN-US">BBQ package<br />
</span><span lang="EN-US" xml:lang="EN-US">2</span>인<span lang="EN-US" xml:lang="EN-US">-30,000</span>원<br />
<span lang="EN-US" xml:lang="EN-US"><</span>목살<span lang="EN-US" xml:lang="EN-US">500g, </span>소시지<span lang="EN-US" xml:lang="EN-US">, </span>버섯<span lang="EN-US" xml:lang="EN-US">, </span>각종야채<span lang="EN-US" xml:lang="EN-US">, </span>김치<span lang="EN-US" xml:lang="EN-US">, </span>양념류<span lang="EN-US" xml:lang="EN-US">, </span><strong>조식</strong><span lang="EN-US" xml:lang="EN-US">(</span>라면<span lang="EN-US" xml:lang="EN-US">, </span>햇반<span lang="EN-US" xml:lang="EN-US">, </span>김치<span lang="EN-US" xml:lang="EN-US">)><br />
</span>숯<span lang="EN-US" xml:lang="EN-US">,</span>그릴 <span lang="EN-US" xml:lang="EN-US">10,000</span>원 <span lang="EN-US" xml:lang="EN-US">(</span>별도 현장결제<span lang="EN-US" xml:lang="EN-US">)</span><br />
음식 추가시 매점이용 </li>
<li>매점이용시간 <span lang="EN-US" xml:lang="EN-US">8:00AM~10:00PM<br />
</span>체크인 <span lang="EN-US" xml:lang="EN-US">- </span>오후<span lang="EN-US" xml:lang="EN-US">3</span>시 <span lang="EN-US" xml:lang="EN-US">(</span>이전 입실 불가<span lang="EN-US" xml:lang="EN-US">)</span><br />
체크아웃<span lang="EN-US" xml:lang="EN-US">- </span>오전 <span lang="EN-US" xml:lang="EN-US">11</span>시 <span lang="EN-US" xml:lang="EN-US">(</span>퇴실시간엄수<span lang="EN-US" xml:lang="EN-US">)</span><br />
입금은 필히 예약자명으로 해주시고 다를 경우 담당자에게 연락바랍니다<span lang="EN-US" xml:lang="EN-US">.</span><br />
쓰레기는 분리수거 해주시고 깨끗하게 이용해주시기 바랍니다<span lang="EN-US" xml:lang="EN-US">.</span> </li>
<li><span lang="EN-US" xml:lang="EN-US">환불기준<br />
10</span>일전 <span lang="EN-US" xml:lang="EN-US">- 100% </span>환불<br />
<span lang="EN-US" xml:lang="EN-US">8~9</span>일전 <span lang="EN-US" xml:lang="EN-US">- 90% </span>환불 <span lang="EN-US" xml:lang="EN-US">10% </span>공제<br />
<span lang="EN-US" xml:lang="EN-US">6~7</span>일전 <span lang="EN-US" xml:lang="EN-US">- 70% </span>환불 <span lang="EN-US" xml:lang="EN-US">30% </span>공제<br />
<span lang="EN-US" xml:lang="EN-US">4~5</span>일전 <span lang="EN-US" xml:lang="EN-US">- 50% </span>환불 <span lang="EN-US" xml:lang="EN-US">50% </span>공제<br />
<span lang="EN-US" xml:lang="EN-US">3~4</span>일전 <span lang="EN-US" xml:lang="EN-US">- 30% </span>환불 <span lang="EN-US" xml:lang="EN-US">70% </span>공제<br />
<span lang="EN-US" xml:lang="EN-US">2</span>일전 <span lang="EN-US" xml:lang="EN-US">- 10% </span>환불 <span lang="EN-US" xml:lang="EN-US">90% </span>공제<br />
<span lang="EN-US" xml:lang="EN-US">1</span>일전<span lang="EN-US" xml:lang="EN-US">, </span>당일 <span lang="EN-US" xml:lang="EN-US">- </span>환불불가 </li>
<li>유의사항<br />
애완동물은 다른 객실 손님들을 위해 입실을 금하오니 양해바랍니다<span lang="EN-US" xml:lang="EN-US">.<br />
</span>밤<span lang="EN-US" xml:lang="EN-US">10</span>시이후 고성방가 및 전자기기소음 등은 주변손님들에게 피해를 주게되오니 자제하여 주시기 바랍니다<span lang="EN-US" xml:lang="EN-US">.<br />
</span>비치된 물품은 훼손이나 분실되는 일 없도록 깨끗하게 사용하셔야 합니다<span lang="EN-US" xml:lang="EN-US">.</span> </li>
</ol>
<h2 class="rm_select"><span></span>객실선택</h2>
<p class="select">
<span class="sound_only">날짜를 변경하시면 입력한 내용이 초기화 됩니다.</span>
<label for="if_day" class="sound_only">날짜</label>
<select name="select" id="if_day" class="day_select"><?php echo optionDate($select); ?></select>
</p>
<table class="mara_rw">
<caption>객실 선택</caption>
<colgroup>
<col class="rm_grid_5"><!-- 25% -->
<col class="rm_grid_2"><!-- 10% -->
<col class="rm_grid_3"><!-- 15% -->
<col class="rm_grid_3"><!-- 15% -->
<col class="rm_grid_3"><!-- 15% -->
<col class="rm_grid_2"><!-- 10% -->
<col class="rm_grid_2"><!-- 10% -->
</colgroup>
<thead>
<tr>
<th width="105" scope="col">객실정보</th>
<th width="91" scope="col">기준/최대</th>
<th width="49" scope="col">숙박일자</th>
<th width="84" scope="col">숙박기간</th>
<th width="84" scope="col">인원</th>
<th width="53" scope="col">BBQ</th>
<th width="49" scope="col">이용금액</th>
<th width="116" scope="col">선택</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="6">총 결제금액</td>
<td class="red" colspan="2"><span id="total"></span>원</td>
</tr>
</tfoot>
<tbody>
<?php for($i = 0;$i < $max; $i++){ ?>
<tr>
<td class="left">
<input type="hidden" name="use[<?php echo $ROOM[$i]['wr_id']; ?>]" value="<?php echo $ROOM[$i]['disabled']; ?>">
<a href="#none" onclick="window.open('<?php echo $ROOM[$i]['link']; ?>');"><img src="<?php echo $board_skin_url; ?>/img/b_room.gif" alt="상세정보"></a>
[<?php if($ROOM[$i]['ca_name']){ echo $ROOM[$i]['ca_name'] . '/'; } ?><?php echo $ROOM[$i]['wr_1']; ?>평형] <?php echo $ROOM[$i]['wr_subject']; ?>
</td>
<td><?php echo $ROOM[$i]['wr_2']; ?>명/<?php echo $ROOM[$i]['wr_3']; ?>명</td>
<td><?php echo $select; ?></td>
<td>
<label for="if_stay[<?php echo $ROOM[$i]['wr_id']; ?>]" class="sound_only">숙박기간</label>
<select name="stay[<?php echo $ROOM[$i]['wr_id']; ?>]" id="if_stay[<?php echo $ROOM[$i]['wr_id']; ?>]" onchange="checkPrice('<?php echo $ROOM[$i]['wr_id']; ?>');" <?php echo $ROOM[$i]['disabled']; ?>>
<?php optionStay($ROOM[$i]['stay']); ?>
</select>
</td>
<td>
<label for="if_person[<?php echo $ROOM[$i]['wr_id']; ?>]" class="sound_only">인원선택</label>
<select name="person2[<?php echo $ROOM[$i]['wr_id']; ?>]" id="if_person[<?php echo $ROOM[$i]['wr_id']; ?>]" onchange="checkPrice('<?php echo $ROOM[$i]['wr_id']; ?>');" <?php echo $ROOM[$i]['disabled']; ?>>
<?php optionPerson($ROOM[$i]['wr_2'], $ROOM[$i]['wr_3']); ?>
</select>
</td>
<td align="center"><input type="checkbox" name="room2[]" value="<?php echo $ROOM[$i]['wr_id']; ?>" onclick="checkTotal();" <?php echo $ROOM[$i]['disabled']; ?>></td>
<td><span id="price[<?php echo $ROOM[$i]['wr_id']; ?>]"><?php echo number_format($ROOM[$i]['price']); ?></span>원</td>
<td>
<?php if(isset($ROOM[$i]['inquiry']) == true){ ?>
<a href="<?php echo $ROOM[$i]['inquiry']; ?>"><img src="<?php echo $board_skin_url; ?>/img/b_inquiry.gif" alt="예약확인"></a>
<?php } else{ ?>
<input type="checkbox" name="room[]" value="<?php echo $ROOM[$i]['wr_id']; ?>" onclick="checkTotal();" <?php echo $ROOM[$i]['disabled']; ?>>
<?php } ?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<h2 class="info"><span></span>예약자정보</h2>
<table class="mara_info">
<caption>예약자정보 입력</caption>
<colgroup>
<col class="rm_grid_4"><!-- 20% -->
<col class="rm_grid_6"><!-- 30% -->
<col class="rm_grid_4"><!-- 20% -->
<col class="rm_grid_6"><!-- 30% -->
</colgroup>
<tbody>
<tr>
<th scope="row"><label for="if_name">이름</label></th>
<td><input type="text" name="wr_name" id="if_name" ></td>
<th scope="row"><label for="if_pw">비밀번호</label></th>
<td><input type="password" id="if_pw" name="wr_password" <?php echo $password_required; ?> ></td>
</tr>
<tr>
<th scope="row"><label for="if_phone" class="frm_essential">연락처</label></th>
<td colspan="3">
<span class="frm_info">(반드시 *** 개인정보보호를 위한 휴대폰번호 노출방지 ***과 같은 형식으로 입력해주세요)</span>
<input type="text" name="wr_homepage" value="<?php echo $homepage; ?>" id="if_phone" class="required" required>
</td>
</tr>
<tr>
<th scope="row"><label for="if_memo" class="frm_essential">메모</label></th>
<td colspan="3"><textarea name="wr_content" id="if_memo" class="required" cols="10" rows="5"><?php echo $content; ?></textarea></td>
</tr>
</tbody>
</table>
<?php if($guide){ ?>
<h2 class="important"><span></span>준수사항</h2>
<p class="explain"><?php echo get_text($guide, 1); ?></p>
<?php } ?>
<div class="mara_btn_area">
<input type="image" src="<?php echo $board_skin_url; ?>/img/b_write.gif" alt="예약하기">
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&select=<?php echo $select; ?>"><?php echo $BUTTON; ?></a>
</div>
</form>
<script>
$(document).ready(function(){
var day_trigger = $(".day_select");
day_trigger.each(function(){
var currentVal = $(this).val();
day_trigger.change(function(){
var day_selVal = $(this).val();
if (! confirm("날짜를 변경하시면 입력한 내용이 초기화 됩니다. 변경하시겠습니까?")) {
$(".day_select").val(currentVal);
}
else{
location.replace('<?php echo G5_BBS_URL; ?>/write.php?bo_table=<?php echo $bo_table; ?>&select='+day_selVal);
}
});
});
});
</script>
<?php echo "<script type='text/javascript' src='{$g5['path']}/js/ajax.js'></script>"; ?>
여기는 정보값을 넘겨주는 php입니다... 여기서 스크립트 부분 연동되네요....
function getTotal($wr_id, $select, $stay, $person, $bbq)
{
global $g5, $board;
$result = 0;
$write = sql_fetch("SELECT * FROM {$g5['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) ;
$result += $write['wr_9'];
return $result;
}
추가로 스크립트 php 에서 넘겨받은 함수처리 부분입니다ㅎㅎ
자동합산 부분과 제가 추가시켜놓은 bbq 가 금액에 산출되는 것이 가능하게 하고싶습니다 ㅠㅠ 꼭 좀 도와주세요.....
답변 1
몇 주전부터 같은 내용의 질문글을 계속 남기시는데 아직 해결 못하셨나 보네요.
기본스킨과는 달리 특별한 경우만 사용하는 스킨이기에 설치하면서 복잡한 구조를 모두 파악하고
문제점을 해결하는 형태라서 간단하게 답변을 기대하시기는 쉽지 않아 보입니다.
그러므로 이런 복잡한 내용을 모두 분석해서 수정하는 일을 무상으로 요구하는 것은 무리가 있다고 보여지네요.
반드시 필요한 기능이라면 제작의뢰를 통한 실력 좋은 그누 회원님께 작업의뢰 해보시길 바랍니다.