计算天数之间的差异*每天价格=PHP值
我目前正在开发一个小表单,允许人们在旅馆预订住宿。基本上,我让他们选择两个日期。(到达日期和离开日期)然后我想计算这些日期之间的差值(以天为单位),最后我想将天数乘以每天的价格 我似乎不知道如何计算每天的天数*价格,并将该字符串传递到表单中的“金额值” 到目前为止,我得到的是:计算天数之间的差异*每天价格=PHP值,php,html,forms,checkout,datediff,Php,Html,Forms,Checkout,Datediff,我目前正在开发一个小表单,允许人们在旅馆预订住宿。基本上,我让他们选择两个日期。(到达日期和离开日期)然后我想计算这些日期之间的差值(以天为单位),最后我想将天数乘以每天的价格 我似乎不知道如何计算每天的天数*价格,并将该字符串传递到表单中的“金额值” 到目前为止,我得到的是: <input type="text" id="datepicker" value="arrival (day-month-year)" /> <input type="text" id="datepic
<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相当陌生。谢谢。datetime对象提供了一个
diff
函数:
日期间隔对象
(
[y] =>0
[m] =>0
[d] =>2
[h] =>0
[i] =>0
[s] =>0
[反转]=>0
[天]=>2天
)
这样你就可以计算你的价格了
$price = $pricePerDay * $interval->days;
datetime
对象提供了一个diff
函数:
日期间隔对象
(
[y] =>0
[m] =>0
[d] =>2
[h] =>0
[i] =>0
[s] =>0
[反转]=>0
[天]=>2天
)
这样你就可以计算你的价格了
$price = $pricePerDay * $interval->days;
试试这个:
function dateDiff($start, $end)
{
$start_ts = strtotime($start);
$end_ts = strtotime($end);
$diff = $end_ts - $start_ts;
return round($diff / 86400);
}
试试这个:
function dateDiff($start, $end)
{
$start_ts = strtotime($start);
$end_ts = strtotime($end);
$diff = $end_ts - $start_ts;
return round($diff / 86400);
}
您必须在表单中输入字段,并为其命名如下:
<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
}
?>
您必须在表单中输入字段,并为其命名如下:
<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
}
?>
试试echo$date1
,看看你认为在那里做的任何事情都不起作用。一旦你把这个问题解决了,你就可以开始考虑从一个字符串中减去另一个字符串的结果,因为这肯定不会达到你所期望的效果。我试图抓住#datepicker和#datepicker2的价值。在PHP中不是这样做的。Javascript,有点像,但不是phpy您的表单输入不在表单中,您没有引用$\u POST数组变量,您可以在其中访问这些值,您没有在两个日期字段中包含name属性。去看看这些,你会找到你的答案:)谢谢尼亚克西。这就成功了。这正是哈姆扎所解释的。试试echo$date1
,看看你认为你在那里做的任何事情都不起作用。一旦你把这个问题解决了,你就可以开始考虑从一个字符串中减去另一个字符串的结果,因为这肯定不会达到你所期望的效果。我试图抓住#datepicker和#datepicker2的价值。在PHP中不是这样做的。Javascript,有点像,但不是phpy您的表单输入不在表单中,您没有引用$\u POST数组变量,您可以在其中访问这些值,您没有在两个日期字段中包含name属性。去看看这些,你会找到你的答案:)谢谢尼亚克西。这就成功了。这正是哈姆扎解释的。谢谢你,亲爱的先生!非常感谢。谢谢您,亲爱的先生!非常感谢。