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>

等...

ただし、session_start();の$ usernameの場合、モデレーターフィールドに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 に答える