这是我的以下功能:
function Active()
{
............
$num_rows = $db->doQuery('SELECT PremiumDays, PremiumStartTime FROM Premium WHERE AccountID = ?', $_SESSION['AccountID']);
if ($num_rows == -1)
{
$this->Error('ERROR');
$db->getError();
return;
}
$data = $db->doRead();
$data['Status'] = $num_rows == 0 ? '<:SHOW_NO_PREMIUM_STATUS:>' : '<b><font size="2" color="red">Premium is active - <%Days_Remaining%> days remaining.</font></b>';
$replace = array
(
'account_status' => $data['Status'],
'days_remaining' => $data['PremiumDays'] - date_create($data['PremiumStartTime'])->diff(date_create())->days
);
$this->content = Template::Load('account-template', $replace);
}
PremiumDays
列包含10
,15
,30
等数字。
PremiumStartTime
包含日期,格式为2018-12-17 21:13:00
如果没有找到行,它将显示<:SHOW_NO_PREMIUM_STATUS:>
,但是,当存在一行但days_remaining
是0
或像{{ 1}},然后再次显示-3
感谢所有帮助。预先感谢!
答案 0 :(得分:0)
我已经修改了您的查询和代码,希望对您有所帮助
function Active() {
$num_rows = $db->doQuery('SELECT PremiumDays, PremiumStartTime, (PremiumDays - DATEDIFF(day, SYSDATETIME(), PremiumStartTime)) AS days_remaining FROM Premium WHERE AccountID = ?', $_SESSION['AccountID']);
if ($num_rows == -1) {
$this->Error('ERROR');
$db->getError();
return;
}
$data = $db->doRead();
if (empty($data) || $data['days_remaining'] < 0) {
$account_status = '<:SHOW_NO_PREMIUM_STATUS:>';
$days_remaining = 0;
}
else {
$account_status = '<b><font size="2" color="red">Premium is active - <%Days_Remaining%> days remaining.</font></b>';
$days_remaining = $data['days_remaining'];
}
$replace = array(
'account_status' => $account_status,
'days_remaining' => $days_remaining
);
$this->content = Template::Load('account-template', $replace);
}
答案 1 :(得分:0)
您可以在设置days_remaining
之前移动$data['Status']
的计算(但在确定存在有效数据即$num_rows != 0
之后),然后将其用于{{1}的计算中}例如
$data['Status']