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 子句中也是如此。

如果你只使用一个=,你实际上是在做一个作业。因此,在您的情况下,在 if 子句中,您尝试将值分配给membervariable $_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 语句中,您应该使用双 "=" für 比较

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