Php 在预订计算器中计算不同日期的价格
我正在开发一个订票成本计算器系统,我从Stackoverflow之前的问题中得到了灵感 我实际上有这个表结构: 房间号 开始日期 结束日期 价格 1. 2021-07-24 2021-08-06 115 1. 2021-08-07 2021-08-28 145 1. 2021-08-29 2021-09-12 65Php 在预订计算器中计算不同日期的价格,php,mysql,sql,Php,Mysql,Sql,我正在开发一个订票成本计算器系统,我从Stackoverflow之前的问题中得到了灵感 我实际上有这个表结构: 房间号 开始日期 结束日期 价格 1. 2021-07-24 2021-08-06 115 1. 2021-08-07 2021-08-28 145 1. 2021-08-29 2021-09-12 65 在查询中,您缺少行“完全”包含在指定期间的情况:对于从2021-08-01到2021-08-31的期间,第二行根本不被考虑 尝试使用以下代码 $query = "
在查询中,您缺少行“完全”包含在指定期间的情况:对于从
2021-08-01
到2021-08-31
的期间,第二行根本不被考虑
尝试使用以下代码
$query = "
SELECT
room_id,
SUM(price * ( 1 + Datediff( Least(end_date, '$end_date' - interval 1 day), Greatest( start_date, '$start_date') ) )) AS Total
FROM
counter
WHERE
(
('$end_date' - interval 1 day) BETWEEN start_date AND end_date
)
OR
(
'$start_date' BETWEEN start_date AND end_date
)
OR
(
(start_date BETWEEN '$start_date' AND ('$end_date' - interval 1 day))
AND
(end_date BETWEEN '$start_date' AND ('$end_date' - interval 1 day))
)
GROUP BY
room_id
";
$result = $mysqli->query($query);
while($row = $result->fetch_array()){
$rows[] = $row;
}
foreach($rows as $row){
$final_cost=$row['Total'];
}
我不确定代码是否完全符合您的需要,因为我不确定计算的逻辑,但我希望它能解决您的问题。是的。谢谢你的帮助!我们已经完成了一半的代码;唯一的问题是,根据我的数据库中有多少房间id,我得到x行。例如,我有6个room_id,所以我得到6行结果作为总计,当我打印它时,它总是采用最新的结果,而不是正确的结果。Room_id 1-300 Room_id 2-400 Room_id 3-250 Room_id 4-500 Room_id 5-320 Room_id 6-200如果选择的Room是4,系统总是将Room_id 6打印为总计(while循环中的最后一个值。谢谢