根据 php 会话属性更改 HTML 菜单栏


Changing HTML menubar based on php session properties?

所以,我有一个MySQL数据库,将用户列为经理或员工。 我想根据属性更改他们看到的菜单栏。 我确实在 php 中完成了所有这些工作,但是在重新设计时,我想过将其放在 html 文件中,但我不太清楚这应该如何工作。

这是我用来在文件菜单栏中进行操作的 php 代码2.php:

<?php
$email = $_SESSION['logname'];
$results = "SELECT email FROM manager_list WHERE email = '$email'";
$results = mysqli_query($cxn, $results) or die("Query died: query");
$numrows = mysqli_num_rows($results);
if ($numrows == 0)
{
    echo"<div id='menu'>";
    echo"<ul>";
    echo"<li><a href='index2.php'>Quick Review</a></li>";
    echo"<li><a href='myPerformance.php'>My Peformance</a></li>";
    echo"<li><a href='myGoals.php'>My Goals</a></li>";
    echo"<li><a href='sHelp.php'>Help</a></li>";
    echo"</ul>";
    echo"</div>";
}
if ($numrows > 0)
{
    echo"<div id='menu'>";
    echo"<ul>";
    echo"<li><a href='index2.php'>Quick Review</a></li>";
    echo"<li><a href='myPerformance.php'>My Peformance</a></li>";
    echo"<li><a href='myGoals.php'>My Goals</a></li>";
    echo"<li><a href='toolsManager.php'>Manager Tools</a></li>";
    echo"<li><a href='sHelp.php'>Help</a></li>";
    echo"</ul>";
    echo"</div>";
}
?>

这是我使用它的地方(索引.html)

<?php
include('sessionauth.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>TinyEval</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<div id="wrapper">
<?php 
include('header2.php');
include('menubar2.php'); 
?>
    <!-- begin #page -->
    <div id="page">
        <div id="content">
            <div class="post">
                <h2 class="title">Frequently Asked Questions</h2>
                <div class="entry">
                    <p>How do I fix my headers?</p>
                </div>
            </div>
        </div>
    </div>
    <div style="clear: both;">&nbsp;</div>
    <!-- end #page -->
</div>
<?php include('footer2.php'); ?>
</body>
</html>

有没有办法在没有 menubar2 include的情况下做到这一点.php - 也就是说,将它们全部放在 html 文件本身中,但不必使用所有 echo 语句?

很抱歉这个新手问题,但我正在努力弄清楚 html 和 php/MySQL 是如何联系在一起的。谢谢!

这种方法是可靠的,只要您将索引文件命名为索引.php。PHP 最初是一种 HTML 模板语言,像这样将它与页面部分的包含一起使用是完全正确的。您可以将该代码直接放入 index.php,但使用 include 会使代码更易于重用。此外,当您返回超过 0 行时,这里有更简单、更 DRY 的方式来更改菜单:

$numrows = mysqli_num_rows($results);
//these lines get echoed in both cases
echo "<div id='menu'>";
echo "<ul>";
echo "<li><a href='index2.php'>Quick Review</a></li>";
echo "<li><a href='myPerformance.php'>My Peformance</a></li>";
echo "<li><a href='myGoals.php'>My Goals</a></li>";
if ($numrows > 0) {
    echo "<li><a href='toolsManager.php'>Manager Tools</a></li>";
}
echo "<li><a href='sHelp.php'>Help</a></li>";
echo "</ul>";
echo "</div>";

为了进一步扩展PHP-它是一种服务器端语言,这意味着它不像Javascript那样在用户的浏览器中运行。当浏览器请求以 PHP 结尾的页面时,服务器运行脚本,打印出结果(通常为 HTML),并仅向浏览器提供呈现的输出。在这种情况下,即使您的主索引.php和包含都包含 php 脚本,浏览器中显示的内容也只是脚本的输出。