嵌套的PHP开关包括导航

时间:2014-08-17 04:22:17

标签: php navigation include nested switch-statement

我目前正在开发一个小型的Web项目,我的计划是从下到上构建它 - 首先创建一个仅使用PHP,HTML和CSS的运行网站,然后,如果用户启用它,通过Javascript的魔力逐步增强网站,更具体地说 - jQuery。但是,我在PHP方面遇到了一些问题,因为我只是新手,当谈到这种脚本语言时,我无法弄清楚的是:

如何实现一个PHP开关包含另一个内部的导航?

为了更好地阐明我想要实现的目标,让我向您展示一下我的网站结构的样子:

  • Header.php(Header)
  • Page1.php(内容页面1)
  • Page2.php(内容页面2)
  • Page3.php(内容页面3)
  • Page3.1.php(内容页面3子内容1)
  • Page3.2.php(内容页面3子内容2)
  • Page3.3.php(内容页面3子内容3)
  • Footer.php(页脚)

正如你所看到的,当谈到这个模拟时,它是在第3页,我打算在另一个中嵌入一个php导航。这样可以在该页面上启用一些幻灯片子导航,但到目前为止,我所做的努力至多是徒劳的。 就代码而言,这就是我设法废弃的东西。

  
<a class="link" href="index.php?id=page1">Page1</a>
<a class="link" href="index.php?id=page2"> Page2</a>
<a class="link" href=” index.php?id=page3">Page3</a>

<?php

  switch($_GET['id']) {
  default:
  include('page1.php');

  break; case "page2":
  include('page2.php');

  break; case "page3":
  include('page3.php');  // *Nested navigation goes inside this page
  }
?>
  

*在page3.php的内部我提供了几乎相同的代码,只是它链接到该页面的子页面(page3.1.php,page3.2和page3.3.php)

不幸的是,这似乎不起作用 - 首先,当我输入localhost / index.php时,我的Web浏览器会收到以下通知: 注意:未定义的索引:第26行的C:\ xampp \ htdocs \ php-navigation \ index.php中的id。 但是,当我点击其中一个链接,或输入像index.php?id = page1这样的网址时,我没有注意到这一点。所以我似乎需要定义'id'变量,但是在哪里以及如何做到这一点?

除此之外,第3页的嵌套导航根本不起作用,相反,当点击指向子页面的链接时,我会被重定向到索引页面。我可能需要处理URL:s,但话又说回来,我知道什么?

请帮助我弄清楚如何使这项工作 - 所有的帮助,即使只是在正确的方向轻微推动,也欢迎并非常感谢 - 提前感谢!

/ Johan Wendesten

2 个答案:

答案 0 :(得分:0)

我的朋友英语不是我的第一语言,所以我再次阅读,但我在你的代码中发现的一个错误就是这个。

第三页,这就是为什么你的page3链接有问题

<a class="link" href=” index.php?id=page3">Page3</a>

href部分错误,这一个href =“它应该是这个href =&#34;意味着你的href部分应该是这个

href="index.php?id=page3"

并删除id

的错误

添加if this statement

if($_REQUEST=='GET'){ //all of your switch statement will come here }

所以你的代码应该是这样的

<?php

//start of if statement  
if($_REQUEST=='GET'){


  switch($_GET['id']) {
  default:
  include('page1.php');

  break; case "page2":
  include('page2.php');

  break; case "page3":
  include('page3.php');  // *Nested navigation goes inside this page
  }

}//end of if statement

答案 1 :(得分:0)

您收到的警告是关于未定义的索引 - 您正在尝试访问不存在的数组元素。你需要改变

switch($_GET['id']) {

if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    $id = "page1";
}

switch($id) {

对于第3页,首先您可能会遇到问题:

<a class="link" href=” index.php?id=page3">Page3</a>

您会注意到一个额外的空格和一个奇怪的引用( vs " - 您想要")。

对于子页面,我们必须看到生成的网址,但我猜测它也与链接有关 - 为了与您的方式保持一致,我可能会看到链接:

<a class="link" href="index.php?id=page3&subid=2">Subcontent 2</a>

然后在php:

if (isset($_GET['subid'])) {
    $subid = $_GET['subid'];
} else {
    $subid = 1;
}

switch($subid) {