【问题标题】:PHP switch isnt workingPHP 开关不工作
【发布时间】:2014-10-03 11:41:20
【问题描述】:
<body>
    <?php

        if (isset($_GET['page'])) {
            switch($_GET['page']) {
                case "domov": include ("index.php"); break;
                case "ponuka": include ("pages/ponuka.html"); break;
                case "akcie": include ("pages/akcie.html"); break;
                case "kontakt": include ("pages/kontakt.html"); break;
                default: include ("index.php"); break;
            }
        }
        else  {
            include("index.php");
        }
    ?>

    <div id="header">
        <div>
            <ul class="first">
                <li><a href="index.php?page=domov">Domov</a></li>
                <li><a href="index.php?page=ponuka">Ponuka pizze</a></li>
            </ul>

            <div>
                <a href="index.php"><img src="images/logo.png" alt="Logo"></a>
            </div>

            <ul>
                <li><a href="index.php?page=akcie">Akcie</a></li>
                <li><a href="index.php?page=kontakt">Kontakt</a></li>
            </ul>
        </div>
        <span></span>
    </div>
</body>

我在使用 php 开关交换页面时遇到问题,例如,当我点击“kontakt”(联系人)按钮时,在浏览器中它显示 .../index.php?page=kontakt 但 kontakt.html 的内容不会出现。也许它很容易为你解决,但我是编程新手,我无法处理这个问题。感谢帮助。

.. 对不起我蹩脚的英语语言技能

edit1:也许值得一提的是,如果我点击“ponuka pizze”/“kontakt”/“akcie”,它仍然会显示 index.php 的内容

edit2:我更改了我的代码,现在看起来你可以看到它,但它仍然不起作用,问题与 edit1 中的相同

【问题讨论】:

  • kontakt !== Kontact

标签: php html switch-statement


【解决方案1】:

这些值区分大小写。所以Kontakt不等于kontakt:

switch($_GET['page']) {
  case "domov": include ("index.php"); break;
  case "ponuka": include ("pages/ponuka.html"); break;
  case "akcie": include ("pages/akcie.html"); break;
  case "kontakt": include ("pages/kontakt.html"); break;
  default: include ("index.php"); break;
    }
   }

【讨论】:

  • 还没有!现在开车去办公室。那我终于可以喝咖啡了!
  • 不过,您还缺少其他东西。 ;) index.php?=page=kontakt - = 中的东西
  • 同样,没有帮助:/
  • OP 更改了问题/代码。现在是“它显示.../index.php?page=kontakt” - 我很高兴我没有碰这个。
  • 我实际上是在我走出门之前发布了我的答案。 :) 我确实注意到了错误的 URL,但在发布问题时认为这只是一个错字。看来我猜对了。但看起来这可能比我最初想象的更深入。
【解决方案2】:

需要从 url 中删除 =page 中的 =,然后您将获得 $_GET['page'] 并确保在 switch 中有正确匹配的字符串

if (isset($_GET['page'])) {
    switch($_GET['page']) {

【讨论】:

    【解决方案3】:

    首先,你的网址有点不对:

    index.php?=page=kontakt
              ^
    

    这应该是:

    index.php?page=kontakt
    

    我在使用 php 开关交换页面时遇到问题,例如,当我点击“kontakt”(联系人)按钮时,在浏览器中向上显示 .../index.php?=page=kontakt

    我不知道您真正使用的是哪个网址,但请确保您的值与大小写字母或小写字母相同:

    <li><a href="index.php?page=kontakt">Kontakt</a></li>
    case "kontakt": include ("pages/kontakt.html"); break;
    
    // or
    
    <li><a href="index.php?page=Kontakt">Kontakt</a></li>
    case "Kontakt": include ("pages/kontakt.html"); break;
    

    【讨论】:

    • OP 更改了问题/代码。现在是“它显示.../index.php?page=kontakt” - 很高兴我没有碰这个。
    • @Dedo 正在查看发布的内容,我并没有太多会导致它无法正常工作。我唯一能指出的是这些文件的路径,如果它们确实是正确的
    • 路径问题。 @Dedo我使用回声代替包含测试了您的代码,并且效果很好。在您打开 &lt;?php 标记 error_reporting(E_ALL); ini_set('display_errors', 1); 后立即将错误报告添加到文件顶部,这将表明发现错误。
    • 我想我知道问题出在 Ghost 和 @Dedo 上。在case "domov": include ("index.php"); break; 中包含index.php 并设置为默认值,而主页的文件名为index.php。因此,它将它包含在网站的不同部分。因此需要给文件起一个不同的名字。即:menu.php?page=Kontakt
    • 这是我能得出的唯一结论。
    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多