1

我有一个页面,登录用户可以在其中看到不同链接的列表,但前提是链接与 MySQL 数据库中的条目匹配,如下所示:

<li>
                <?php
                        require ("scripts/connect.php");
                        $query = mysql_query("SELECT * FROM files WHERE subject='consulting' AND active='1'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows > 0) 
                            echo "      
                            <a class='atags' href=\"javascript:showonlyone('consulting', this)\">Consulting</a>";
                        if ($numrows == 0)
                            echo "";
                ?>
                </li>
                <li>
                <?php
                        require ("scripts/connect.php");
                        $query = mysql_query("SELECT * FROM files WHERE subject='Projects' AND active='1'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows > 0) 
                            echo "<li><a class='atags' href=\"javascript:showonlyone('projects', this)\">Projects</a></li>";
                        if ($numrows == 0)
                            echo "";
                ?>
                </li>

ETC...

但是,我刚刚意识到,如果 $username 在我的 session_start(); 在主持人字段中有 1 我想展示一些不同的东西。我怎样才能做到这一点?从理论上讲,我正在寻找的是这样的:

if ($username && $moderator == 1) {
   echo "You can edit this.";
}
else
    echo "<li>
                <?php
                        require ("scripts/connect.php");
                        $query = mysql_query("SELECT * FROM files WHERE subject='art' AND active='1'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows > 0) 
                            echo "      
                            <a class='atags' href=\"javascript:showonlyone('art', this)\">Art</a>";
                        if ($numrows == 0)
                            echo "";
                ?>
                </li>
                <li>
                <?php
                        require ("scripts/connect.php");
                        $query = mysql_query("SELECT * FROM files WHERE subject='computer' AND active='1'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows > 0) 
                            echo "<li><a class='atags' href=\"javascript:showonlyone('computer', this)\">Computer</a></li>";
                        if ($numrows == 0)
                            echo "";
                ?>
                </li>
                <li>
                <?php
                        require ("scripts/connect.php");
                        $query = mysql_query("SELECT * FROM files WHERE subject='critical reading' AND active='1'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows > 0) 
                            echo "<li><a class='atags' href=\"javascript:showonlyone('criticalreading', this)\">Critical Reading</a></li>";
                        if ($numrows == 0)
                            echo "";
                ?>
                </li>
                <li>
                <?php
                        require ("scripts/connect.php");
                        $query = mysql_query("SELECT * FROM files WHERE subject='french' AND active='1'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows > 0) 
                            echo "<li><a class='atags' href=\"javascript:showonlyone('french', this)\">French</a></li>";
                        if ($numrows == 0)
                            echo "";
                ?>
                </li>";

这可能吗?谢谢。

4

2 回答 2

3

您可以在 PHP 和 HTML 代码之间自由切换。有时,对控制流语句使用替代的冒号和结尾语法而不是大括号会有所帮助。

<?php if ($username && $moderator == 1): ?>
    You can edit this.
<?php else: ?>
    <li>
        ...
        <?php
            ...
            if ($numrows > 0):
        ?>
        <a class='atags' href="javascript:showonlyone('art', this)">Art</a>
        <?php
            endif;
        ?>
<?php endif ?>

这比使用要容易得多,echo因为您不必转义引号,并且 HTML 读取更自然。

于 2012-07-06T05:02:35.593 回答
1

与其在 echo 语句中包含 php 标记,不如在实际打印之前处理数据库工作(设置您将要输出的所有变量)。

这样,您可以按照以下模式包含您需要的任何信息:

// database stuff here

echo '...'

if ($moderator == 1) echo '...'

echo '...'

一个更好的选择是在 MVC 模式中处理所有这些。您可以在这里找到更多信息:http ://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

于 2012-07-06T05:01:48.427 回答