0

私は現在、人々がホステルでの滞在を予約できるようにする小さなフォームに取り組んでいます. 基本的に、私は彼らに2つの日付を選んでもらいます. (到着日と出発日)次に、これらの日付の差を日数で計算し、最後に日数に 1 日あたりの料金を掛けます。

日数 * 1 日あたりの価格を計算し、その文字列をフォームの「金額値」に渡す方法がわかりません。

これは私がこれまでに得たものです:

<input type="text" id="datepicker" value="arrival (day-month-year)" />
<input type="text" id="datepicker2" value="departure (day-month-year)" />

<form action="checkout.php" method="post">
    <input name="amount" type="hidden" value="$dateDiff * price per day = value">
    <input type="submit" value="Check out" id="checkout">
</form>

そして私のPHP

<?php   
$date1 = ("#datepicker");
$date2 = ("#datepicker2");
$dateDiff = $date1 - $date2;
$fullDays = floor($dateDiff/(60*60*24));
echo "Difference is $fullDays days";  
?>

編集: 最初の 2 つのコメントの後で、私が PHP の初心者であることを説明させてください。ありがとう。

4

3 に答える 3

2

フォームに入力フィールドを入力し、次のような名前を付ける必要があります。

<form action="checkout.php" method="post">
    <input type="text" id="datepicker" name="datepicker" value="arrival (day-month-year)" />
    <input type="text" id="datepicker2" name="datepicker2" value="departure (day-month-year)" />
    <input name="amount" type="hidden" value="$dateDiff * price per day = value">
    <input type="submit" value="Check out" id="checkout">
</form>

今あなたのPHPファイルに:

<?php
  if(isset($_POST["datepicker"], $_POST["datepicker2"])){
    $date1 = new DateTime($_POST["datepicker"]);
    $date2 = new DateTime($_POST["datepicker2"]);
    $diff = $date1->diff($date2);
    $amount_per_day = 10; // for example 10 dollars
    $total = floor($diff["days"]) * $amount_per_day; // total
  }
?>
于 2013-03-05T09:01:05.997 に答える
2

datetimeオブジェクトは次の機能を提供しますdiff

http://php.net/manual/en/datetime.diff.php

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
print_r($interval);

DateInterval オブジェクト ( [y] => 0 [m] => 0 [d] => 2 [h] => 0 [i] => 0 [s] => 0 [反転] => 0 [日] => 2 )

だからあなたはあなたの価格を計算することができます

$price = $pricePerDay * $interval->days;
于 2013-03-05T08:56:06.830 に答える
1

Try this:

function dateDiff($start, $end)
{
$start_ts = strtotime($start);
$end_ts = strtotime($end);
$diff = $end_ts - $start_ts;
return round($diff / 86400);
}
于 2013-03-05T08:58:29.810 に答える