2010-02-13 50 views
0

我用下面的PHP開關爲我導航菜單:PHP切換導航系統 - 我如何可以將其設置爲使用2個GET變量

<?php include("header.php"); 
    if (! isset($_GET['page'])) 
    { 
     include('./home.php'); 

    } else {  
     $page = $_GET['page']; 
     switch($page) 
     { 
      case 'about': 
       include('./about.php'); 
       break; 
      case 'services': 
       include('./services.php'); 
       break; 
      case 'gallery': 
       include('./gallery.php'); 
       break;  
      case 'photos': 
       include('./photos.php'); 
       break; 
      case 'events': 
       include('./events.php'); 
       break; 
      case 'contact': 
       include('./contact.php'); 
       break; 
     } 
    } 
    include("footer.php"); 
    ?> 

當我去我的「照片」部分,我將爲照片中的其他畫廊創建子列表。

當我在頁面上,現在,我的網址是這樣的:

index.php?page=photos 

我想知道我需要什麼PHP代碼中添加,所以當我去CARS節中,我可以有我url看起來像這樣:

index.php?page=photos&section=cars 

回答

1

從概念上講,你不會只是添加另一個嵌套級別的開關或如果/然後測試?

這可能卡住到您現有的交換機,但它可能是更具可讀性把它放在一個函數

case: 'photos' 
    $section = photo_switch($_GET['section']); 
    include($section); 
    break; 

或者你可以只清理用戶輸入,並使用它:

case 'photos' 
    $section = preg_replace("/\W/", "", $_GET['section']); 
    include('./photos/' . $section . '.php'); 
    break 
+0

謝謝,我還有一個關於這個開關的問題。 我需要第二個變量拉進我的IF語句,這裏是問題的鏈接: http://stackoverflow.com/questions/2256561/php-if-statement-question-how-to-pull-第二個變量 – arsoneffect 2010-02-13 05:15:26

+0

實際上,當我有一個頁面使用:index.php?page = photos&section = members 時,上面的代碼 出現問題,它不會拉起我的/photos/members.php頁面。 – arsoneffect 2010-02-13 06:13:46

+0

你的代碼現在究竟是什麼樣的? – 2010-02-14 01:10:21

3

我會採取以下方法。它允許你有任意的文件路徑,而且,imho使得事情更容易擴展和閱讀。

<?php 
    include("header.php"); 

    $page = isset($_GET['page']) ? trim(strtolower($_GET['page']))  : "home"; 

    $allowedPages = array(
     'home'  => './home.php', 
     'about' => './about.php', 
     'services' => './services.php', 
     'gallery' => './gallery.php', 
     'photos' => './photos.php', 
     'events' => './events.php', 
     'contact' => './contact.php' 
    ); 

    include(isset($allowedPages[$page]) ? $allowedPages[$page] : $allowedPages["home"]); 

    include("footer.php"); 
?> 

這同樣的想法可以在photos.php包括延長(或與此有關的任何其他文件)與你可能有不同部分的工作:

photos.php

<?php 
    $section = isset($_GET['section']) ? trim(strtolower($_GET['section'])) : "members"; 

    $allowedPages = array(
     'members' => './photos/members.php', 
     'cars' => './photos/cars.php' 
    ); 

    include(isset($allowedPages[$section]) ? $allowedPages[$section] : $allowedPages["members"]); 
?> 
相關問題