2017-12-28 4 views
0

사용자가 웹 사이트에서 직접 예약 할 수 있도록 단일 속성에 빌라 예약 시스템을 구축 중입니다. 빌라 스테이의 총 비용을 계산하는 방법을 찾기 위해 고심하고 있습니다. 그래서 제가 지불 시스템 (스트라이프)으로 밀어 넣을 수 있습니다.양식에서 날짜 범위를 선택하는 사용자에 따라 값 (비용)을 출력하는 방법

두 날짜 입력 (도착 일 & 출발 날짜)을 받아들이는 양식을 만들고, 두 세트의 잠재적 일 요율이 어쨌든 일정의 날짜에 할당됩니다 (성수기 및 사계절). 이렇게하면 도착 및 출발 날짜가 모두 선택되면 총 비용을 볼 수 있습니다. 사용자가 계속 진행하면 해당 값은 POST를 통해 양식 작업 페이지로 푸시되며 여기에서 총 비용 값을 사용하여 지불하게됩니다.

내가 겪고있는 문제는 양식 일정에 비용을 어떻게 할당합니까? 특정 값을 날짜 범위에 할당 한 MySQL 데이터베이스를 만드는 것이 최선의 방법일까요? 양식의 날짜 입력을 사용하여 DB에서 해당 정보를 가져 오는 방법은 무엇입니까?

+0

귀하의 질문은 너무 광범위하다. 시도한 것을 게시 할 수 있습니까? 실패했을 수 있습니다. 그런 식으로 최소한 당신의 노력을 보여 주었을 것입니다. –

+0

성수기 시즌의 비용을 지시하는 JavaScript 변수 세트를 할당해야합니다. 그런 다음 변경 이벤트를 사용하여 캘린더 입력을 받아 어떤 비용이 적용되는지 확인하십시오. –

답변

0

해보십시오이 라인을 따라 뭔가 (우아한 아니지만, 10 선발) :

var highSeasonDateRange = "xx/xx/xxxx - xx/xx/xxxx"; //use this format 
var lowSeasonDateRange = "xx/xx/xxxx - xx/xx/xxxx"; //use this format 
var highSeasonCost = "xxxxx"; 
var lowSeasonCost = "xxxxx"; 

$(function(){  
    $('input.calendarDateSelect').on("change", function(){ 
     var val = $(this).val(); 
     checkSeasonRate(val, $(this).attr("type") == "date"); 
    }); 
}); 

function checkSeasonRate(date, ISO8601){ 
    var highSeasonDateArray = highSeasonDateRange.split(" - "); 
    var lowSeasonDateArray = lowSeasonDateRange.split(" - "); 
    if(dateRangeCheck(highSeasonDateArray[0], highSeasonDateArray[1], date, ISO8601) === true){ 
     return highSeasonCost; 
    }else if(dateRangeCheck(lowSeasonDateArray[0], lowSeasonDateArray[1], date, ISO8601) === true){ 
     return lowSeasonCost; 
    }else{ 
     return "error"; //Error handler 
    } 
} 

function dateRangeCheck(from, to, check, ISO8601) { 
    var fDate,lDate,cDate; 

    var fromDateArray = from.split("/"); 
    var toDateArray = to.split("/"); 
    var checkDateArray; 

    if(ISO8601){ 
     checkDateArray = check.split("-"); 
     cDate = Date.UTC(checkDateArray[0], checkDateArray[1] - 1, checkDateArray[2]); 
    }else{ 
     checkDateArray = check.split("/"); 
     cDate = Date.UTC(checkDateArray[2], checkDateArray[1] - 1, checkDateArray[0]); 
    } 

    fDate = Date.UTC(fromDateArray[2], fromDateArray[1] - 1, fromDateArray[0]); 
    lDate = Date.UTC(toDateArray[2], toDateArray[1] - 1, toDateArray[0]); 

    if((cDate <= lDate && cDate >= fDate)) { 
     return true; 
    } 

    return false; 
} 

업데이트 :

$(function(){  
    $('input.calendarDateSelect').on("change", function(){ 
     var val = $(this).val(); 
     var cost = checkSeasonRate(val, $(this).attr("type") == "date"); 
     //Do something with cost 
     alert(cost); 
    }); 
}); 
+0

답장을 보내 주셔서 감사합니다, David. dateRange 변수의 경우 MM/DD/YYYY 여야합니다. Date.parse는 해당 형식 만 허용 할 것입니다. – AlexGHooper

+0

@AlexGHooper'Date.parse()가 예상치 못한 결과를 낼 수 있다고 언급 한대로 DD/MM/YYYY 형식을 허용하도록 내 대답을 업데이트했습니다. –

+0

감사합니다. 첫 번째 테스트에서 "calendarDateSelect"클래스를 사용하여 두 개의 테스트 입력을 내 페이지에 추가했습니다. highSeasonCost 또는 lowSeasonCost가 아무것도 반환하지 않지만 변경 이벤트가 트리거되면 함수가 실행되는 것을 볼 수 있습니다. (테스트 페이지는 https://peydanegite.com/bookings/ 참조). 여기에 뭔가 잘못하고 있는지 확실하지 않습니다 ... – AlexGHooper

관련 문제