我想向用户显示他在成功付款确认后接种了他的山羊疫苗 这是我试过的:
<?php
$treatperiod1=$product_row['treat1'];
$currentDate = date("Y-m-d");
$totalDays = $treatperiod1;
$usedDays = round(abs(strtotime($currentDate)-strtotime($orderdate))/60/60/24);
$remainingDays = $totalDays-$usedDays;
if($remainingDays==0) {
echo "<a target = '_blank' href ='product_addon.php?treatp=$treatperiod1' class='btn btn-success'><i class='fa fa-pencil'></i>Vaccinate Gaoat</a>";
} elseif($remainingDays==$treatperiod1) {
echo 'Vaccinated';
} else {
echo $remainingDays.' Days Left';
}
?>
我已经显示了疫苗接种间隔的剩余天数如果用户确认疫苗接种费用,我还要显示“已接种疫苗”。 $product_row['treat1'];
是指定接种疫苗天数的列。 order_details
是一个表格,用于确认订单的列确认。
答案 0 :(得分:1)
山羊疫苗接种:
因为山羊没有自闭症
请阅读how to use PHP DateTime objects因为它们会让您的生活更加轻松。
我将重写您的代码,然后告诉您新代码的作用:
//establish DateTime objects.
$currentDate = new DateTime(); //now.
$orderDate = new DateTime($orderdate); //$orderdate format Y-m-d
//Establish how may days since order date and today.
$difference = $orderDate->diff($currentDate);
$usedDays = $difference->days;
/***
Total Period paid for,
in days, integer.
$product_row['treat1'];
***/
$remainingDays = $product_row['treat1'] - $usedDays;
//Returns an integer value of remaining days.
if($remainingDays < 1) {
echo "<a target = '_blank'
href ='product_addon.php?treatp=".$treatperiod1."'>
Vaccinate Goat</a>";
} elseif($remainingDays==$product_row['treat1']) {
//This will only fire if the goat was vaccinated TODAY.
echo 'Vaccinated';
} else {
echo 'Vaccinated:' .$remainingDays.' Days Left';
}
希望借助上面的链接,你应该能够看到我为你写的内容的基础知识。
一些注意事项:
停止制作仅仅是其他变量副本的变量,效率低下且令人困惑。
(尝试)停止将数据作为GET URL值(例如/newpage.php?treatp=".$var."
)发送到新的PHP页面。这很可能非常不安全。
更具体的答案需要您对MySQL表格的完整解释,如果您需要编辑问题并添加它们。
尝试并远离使用时间戳并将时间戳变量视为数学实体,而是使用DateTime
对象。
实际上,要确定是否付款,您的数据库中应该有付款日期值(付款成功时设置),只需将此日期与付款天数的整数值进行比较封面,使用上面说明的->diff()
方法。