用户级别转换

时间:2015-07-03 21:26:25

标签: php

我目前正在尝试从数据库中获取用户级别,这很好并且正常工作。我在注册或用户编辑时将它们发布为tinyints。

我可以将这些显示出来,IE 用户级别:0 但是我想拥有它,所以 0 更改为常规用户用户列表页面。

这是代码,不起作用。它显示一个空白页面。

如果找到某个值,我创建了一个回显函数。

<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);

include_once '../includes/conn.php';

if(!$user->is_loggedin()){
    $user->redirect('../users/login.php');
}

$stmt = $conn->prepare("SELECT username, level FROM users");
$stmt->execute();

$userRow=$stmt->fetchAll(PDO::FETCH_ASSOC);

function level($userRow){
    if($userRow['level'] == '1'){
        echo "Regular User";
    }
    elseif($userRow['level'] == '2'){
        echo "Moderator";
    }
    elseif($userRow['level'] == '3'){ 
        echo "Administrator"; 
    }else{ 
        echo "Undefined"; 
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>EpicOwl UK | CMS User List</title>
    <meta charset="utf-8">
    <link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body>
<div id="header">
    <a href="index.php"><img id="logo" src="../images/logo.png" /></a>
    <div id="navigation">
        <ul>
            <a href="../index.php"><li>Home</li></a>
            <a href="./profile.php"><li>Profile</li></a>
            <a href="../admin/index.php"><li>Admin Panel</li></a>
            <a href="./logout.php?logout=true"><li>Logout</li></a>
        </ul>
    </div>
</div>
<div id="content">
<h2>Members List</h2>
<table>
    <tr>
        <th align="left">Username</th>
        <th align="left">User Level</th>
    </tr>
        <?php 
        foreach($userRow as $list){
            echo"<tr><td>".($list['username'])."</td><td>".level();."</td></tr>"; 
        }
        ?>
</table>
</div>
<div id="footer">
    <p class="copyright">&copy; EpicOwl UK. All Rights Reserved.</p>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

你在foreach中调用PHP有一个问题

你在调用level()函数后放入分号,终止该行,然后你连接一个也是错误的字符串。

另一个问题是,level需要一个参数,而你却没有发送它。

代码可以修复如下:

修改试试这个

让你的函数返回一个值而不是echo,Echo直接写入标准输出,level函数中的回显被打印在foreach中的回声之前:

    function level($userRow){
        $returnString = '';
        if($userRow['level'] == '1'){
            $returnString = "Regular User";
        }
        elseif($userRow['level'] == '2'){
            $returnString = "Moderator";
        }
        elseif($userRow['level'] == '3'){ 
            $returnString = "Administrator"; 
        }else{ 
            $returnString = "Undefined"; 
        }

        return $returnString;
    }

然后按如下方式调用foreach:

<?php 
      foreach($userRow as $list)
      {
            echo "<tr><td>" . $list['username'] ."</td><td>" 
               . level($list) . "</td></tr>"; 
      } 
?>