2013-03-05 131 views
0

我目前正在制定一个小表格,允许人们预订旅馆住宿。基本上,我让他们选择两个日期。 (到达日&出发日)然后我想计算这些日期之间的差异,以天为单位,最后我想将日数乘以每天的价格。计算天*之间的差价*每日价格=价值PHP

我似乎无法弄清楚如何计算每天的天*价格并将该字符串传递给我的表单中的“金额值”

这是我走到这一步:

<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"; 
?> 

编辑:前两种意见后,让我解释说,我是相当新的PHP。谢谢。

+1

试试'echo $ date1',看看你认为你在那里做什么都行不通。一旦你修好了,你可以开始思考你期望的结果是从另一个字符串中减去一个字符串,因为这肯定不会达到你期望的效果。 – 2013-03-05 08:54:55

+0

我试图捕获#datepicker&#datepicker2的值。 – Jefferson 2013-03-05 08:56:48

+1

这不是你如何在PHP中完成的。 Javascript,kind of,but not PHP – niaccurshi 2013-03-05 08:57:17

回答

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 
    } 
?> 
+1

谢谢亲爱的先生!非常感激。 – Jefferson 2013-03-05 09:07:06

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 [invert] => 0 [天] => 2 )

所以,你可以计算出你的价格与

$price = $pricePerDay * $interval->days; 
1

试试这个:

function dateDiff($start, $end) 
{ 
$start_ts = strtotime($start); 
$end_ts = strtotime($end); 
$diff = $end_ts - $start_ts; 
return round($diff/86400); 
}