我目前正在尝试从数据库中获取用户级别,这很好并且正常工作。我在注册或用户编辑时将它们发布为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">© EpicOwl UK. All Rights Reserved.</p>
</div>
</body>
</html>
答案 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>";
}
?>