2016-07-23 153 views
0

我的目标是减去两次,然后从那里生成一个登录检查器。这段代码为什么会产生空白?

我需要知道的是,如果我已经在几分钟内正确减去了两次。

PHP版本:7.0

时间是使用NOW输入到DB(),并显示如(实施例:2016年7月23日15时01分34秒)

出于某种原因,其中,该代码包含在HTML中,只是空白。

代码(一切都在代码中定义的上涨):

<?php 

include ('../includes/connection.php'); 
include ('../scripts/functions.php'); 

$getOnlineAdmins = $handler->prepare('SELECT * FROM Admins WHERE AdminLevel >= :al AND Status= :stat'); 
$statn = 1; 
$aln = 1; 
$getOnlineAdmins->bindParam(':al', $aln); 
$getOnlineAdmins->bindParam(':stat', $statn); 
$getOnlineAdmins->execute(); 

echo " 
    <table class='table-fill'> 
    <thead> 
     <tr> 
     <th class='text-left' style='padding-left: 12px; padding-right: 12px;';></th> 
     </tr> 
    </thead> 
    <tbody class='table-hover'>"; 

if ($getOnlineAdmins->rowCount() >=1){ 
    echo ("These is one or more rows."); 
    while ($results = $getOnlineAdmins->fetch()){ 
     if((strtotime($results['LastVisited']) + 900) >= time()){ 
      echo ("Time requirement met."); 
      switch ($results['AdminLevel']) { 
       case 3: 
        $rank = 'In-Training/Intern'; 
        break; 
       case 6: 
        $rank = 'Community Moderator'; 
        break; 
       case 9: 
        $rank = 'Senior Moderator'; 
        break; 
       case 12: 
        $rank = 'Supervisor'; 
        break; 
       case 15: 
        $rank = 'Administrator'; 
        break; 
       case 18: 
        $rank = 'Senior Administrator'; 
        break; 
       case 21: 
        $rank = 'Staff Advisor'; 
        break; 
       case 24: 
        $rank = 'Engineer'; 
        break; 
       case 27: 
        $rank = 'Vice Chairman'; 
        break; 
       case 30: 
        $rank = 'Chairman'; 
        break; 
       case 33: 
        $rank = 'Website Engineer'; 
        break; 
       default: 
        $rank = 'Unknown'; 
        break; 
      } 
       echo "<tr>"; 
       echo "<td>" . $results['Username'] . " - " . $rank . "</td>"; 
      } else { 
      echo "<tr><td>{$results['Username']} &ndash; $rank</td>"; 
     } 
    } 
}else{ 
    echo "<tr><td>There are no staff members online.</td>"; 
} 
echo " </tbody> 
     </table>"; 

?> 
+0

当你运行它会发生什么?你会得到预期的结果吗? –

+0

我没有得到预期的结果。这是代码,也许我有一个不同的错误? http://pastebin.com/Abx176F2 – Austin

+1

我看到许多明显的错误。这段代码来自哪里? –

回答

1

据我了解,你期望它now()没有得到当前时间。请参阅this问题,我相信这是你误解的根源。

假设$results['LastVisited']的格式是2016-07-23 14:11:02 –您可以将它转换为UNIX时间戳strtotime

因此,如果时间的15分钟前小于或等于您上次访问的时间:

if (strtotime('-15 minutes') <= strtotime($results['LastVisited'])) {} 

time() –另一种格式,你会使用,而不是MySQL的等价UNIX_TIMESTAMP()

if ((time() - 900) <= strtotime($results['LastVisited'])) {} 
+0

我仍然有问题。在这段代码中,http://pastebin.com/CT7MBLp0(当它包含在HTML中)只是返回空白。我已经确定每个人的状态都设置为0,并且它仍然不会像它应该返回的那样“无人在线”。另外为了进一步参考,这里是该领域。 https://gyazo.com/15c5818e82aaa46f6a265cf289df2a2a – Austin

+0

你能'回声'测试';''你的'if'块成功?并且,在成功的后续if检查下,回显另一个字符串。找出您的脚本到达或未到达的位置。你应该使用'switch'而不是大量的if-else链,例如'switch($ results ['AdminLevel'])'see [this](http://pastebin.com/raw/ntTDmrHA)example – Jonathan

+0

此声明不是跑回声“​​没有在线的工作人员”;即使当状态设置为0时 – Austin

相关问题