2017-12-28 7 views
0

私は1つのプロパティのヴィラ予約システムを構築しています。私はヴィラ滞在の総費用を計算する方法を見つけるのに苦労しているので、支払いシステム(ストライプ)にプッシュすることができます。フォーム内の日付の範囲を選択したユーザーに基づいて値(コスト)を出力する方法

2つの日付入力(到着日&出発日)を受け入れるフォームを作成し、カレンダーの日付(高低の季節)に2つの潜在的な日レートを割り当てます。これにより、到着日と出発日の両方が選択されると、ユーザーは総費用を見ることができます。ユーザーが進むと、その値は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変数の場合、Date.parseはその形式だけを受け入れることができると確信しているので、MM/DD/YYYYでなければなりませんか? – AlexGHooper

+0

@AlexGHooper DD/MM/YYYY形式を許可するように私の答えを更新しました。あなたが 'Date.parse()'が予期しない結果を出す可能性があると述べたので、 –

+0

ありがとうございます。これを私のページに2つのテスト入力とともに追加しました。最初は「calendarDateSelect」のクラスを保持しています。変更イベントがトリガーされると、関数が起動するのを見ることができますが、highSeasonCostまたはlowSeasonCostは何も返しません。 (テストページはhttps://peydanegite.com/bookings/を参照)。ここで何か間違っているのかどうかはわかりません... – AlexGHooper

関連する問題