php确定是否付款

时间:2016-09-12 15:19:26

标签: php mysql

我想向用户显示他在成功付款确认后接种了他的山羊疫苗 这是我试过的:

<?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是一个表格,用于确认订单的列确认。

1 个答案:

答案 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()方法。

enter image description here

Further information on Goat Vaccinations