Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算天数之间的差异*每天价格=PHP值_Php_Html_Forms_Checkout_Datediff - Fatal编程技术网

计算天数之间的差异*每天价格=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属性。去看看这些,你会找到你的答案:)谢谢尼亚克西。这就成功了。这正是哈姆扎解释的。谢谢你,亲爱的先生!非常感谢。谢谢您,亲爱的先生!非常感谢。