当datediff = 0时如何更新数据库中的用户状态

时间:2018-10-01 20:28:57

标签: php mysqli

我有一个用户表,其中有一个名为ROLE的列。从选择下拉列表到“角色”列的值取决于注册时用户的输入,是“ Pastor”还是“ Usher”。

它们也是称为EXPIRY-DATE的列,通过在REG-DATE列中增加90天来填充此列。

查看插入数据库的查询

$sql = "INSERT INTO users (titled, firstname, lastname, phone, email, 
            center_id, region_id, rolename, username, password, date, expirydate) 
        VALUES 
        ('$titled','$firstname','$lastname','$phone','$email','$center_name','$region_name ','$rolename','$username','$password', now(), DATE_ADD(NOW(), INTERVAL 90 day))  ";

if(!mysqli_query($con, $sql)) {
    echo("Error description: " . mysqli_error($con));
}else {
    $message = "Details submitted Successfully";
}
header("refresh:60 , url=register.php");

因此,在注册时,到期日期列会自动填充90天的未来注册日期。

在“牧师的帐户”上,是到期日的倒计时。例如: 您的订阅将在24天后过期。单击此处单击此处以扩展它。 一种通知。

现在,当此日期差倒数至0天时,我希望此通知消息完全更改为其他消息。例如:您的订阅已过期。单击此处单击此处续订。

很遗憾,我的代码没有更改此消息。

请帮助。我不要JS。

代码

<?php  

$expirydate = $_SESSION["expirydate"];
$result = mysqli_query($con, "SELECT user_id, center_id, expirydate, 
        rolename FROM users WHERE rolename='Center Pastor' and user_id = '$user_id' 
        AND center_id = '$center_id'") or die("Failed".mysqli_error($con));

if ($result) {
    if (mysqli_num_rows($result)>0) {

        $current_date = date("Y-m-d");         
        $diff = (strtotime($expirydate) - strtotime($current_date));
        $total_days = floor ($diff / (60*60*24));

        echo ' will expire in '.$total_days.' day(s). Click here <a 
                        href="" class="alert-link">Click Here</a> to extend it.';
    }
    else {

        echo ' has expired. Click here <a href="" class="alert- 
                           link">Click Here</a> to renew.';
    }
}
?>

1 个答案:

答案 0 :(得分:0)

从您的问题来看,我认为您要查询的列过多,为什么不尝试仅选择到期日期,因为这正是您真正需要的。这样您就可以像这样编写查询

$result = mysqli_query($con, "SELECT expirydate FROM users WHERE  and user_id = '$user_id'") or die("Failed".mysqli_error($con));

第二则消息没有改变,因为您的查询失败或此行

  if (mysqli_num_rows($result)>0) {

返回的值小于0或0