0

次のようなコードがあります。

<div class="container">
    <aside class="sidebar">
        <a href="index.php?Cat=members"><h3>Members</h3></a>
        <a href="index.php?Cat=prodcat"><h3>Product Categories</h3></a>
    </aside>
<article class="content">
    <section>
        <?php
        echo $_GET["Cat"];
        if ($_GET["Cat"] = 'members'){
            $membership = New Membership();
            $membership->member_List($sort);
        }
        else if ($_GET["Cat"] = 'prodcat'){
            $membership = New Membership();
            $membership->prodcat_List();
        }
        else {
        echo 'Welcome';
        }
        ?>
       </section>
    </article>
</div>

リンクメンバーが押されたとき、何が起こるべきかということです。ページは自動的にリロードされ、member_list から返されたものだけが表示されます。または、製品カテゴリのリンクが押された場合、prodcat_list から返されたものが表示されます。

問題は。インデックス ページを読み込むと、member_list から返されたものがすぐに表示されます。URLで「Cat」が宣言されていないにもかかわらず。これが発生すると、リンクを使用して変更することはできません。

ご覧のとおり、$_GET["Cat"] のエコーがあります。ページが変わるたびに変化しています。

ただし、ページの残りの部分はそうではありません。理由がわかりません。また、これを修正する方法もわかりません。if/else if ステートメントを入れ替えると。prodcat_list を表示できます。しかし、member_list を表示しようとすると、同じ問題が発生します。NFI 何が起こっているのか。私はPHPのアマチュアにすぎません。しかし、毎日良くなっています。しかし、私には長い道のりがあります。

編集

私はアホです。みんなありがとう!==

4

3 に答える 3

2

これ

if ($_GET["Cat"] = 'members'){

このようにする必要があります

if ($_GET["Cat"] == 'members'){

==あなたの代わりに注意してください=!同様に、後の他の if 句でも。

を 1 つだけ使用すると、=実際に代入が行われます。したがって、あなたの場合、 if 句memberで変数に値を代入しようとします$_GET["Cat"]。その代入には何の問題もないので、それが実行され、if 節は と評価されtrueます。

比較には==またはを使用します===。シングル=はただの課題です!

于 2012-12-19T12:37:31.477 に答える
1

=代入==は比較を意味します。別の文字列と比較したい場合$_GET['Cat']は、比較演算子を使用する必要があります。

またindex.php、 を初めて開いたときに使用$_GET['Cat']すると、 が定義されないため、通知 (未定義のインデックス) が生成$_GET['Cat']されます。if(isset($_GET['Cat']))これを修正するために使用します。

それが役に立てば幸い。

于 2012-12-19T12:45:39.127 に答える
0

コードに誤りがあります:

if ステートメントでは、次のような比較のために二重の「=」を使用する必要があります

if ($_GET["Cat"] == 'prodcat')
于 2012-12-19T12:37:36.023 に答える