2014-04-09 55 views
1

index.php正在控制該網站。 我已經基於elseif includevariable $pphp導航使用獲取或包含

現在$p沒有了什麼東西,我不明白爲什麼。

也正在使用include行業標準還是會GET是更好的選擇?

header file其中包括在index.php但它只是帶我到頁面的鏈接,而不是存儲頁$p

<?php 
$pages = array(
    "home" => "HOME", 
    "services" => "SERVICES", 
    "employees" => "EMPLOYEES", 
    "contact" => "CONTACT"); 
$p = (isset($_GET['p'])) ? $_GET['p'] : ""; 
foreach ($pages as $url => $label) { 
    echo '<li '; 
if ($p == $url) { echo '<li><a class="active" href="' . htmlspecialchars(urlencode($url)). '.php">' 
. htmlspecialchars($label) . '</a></li>'; } else { echo '<li><a href="' . $url . '.php">' . $label . '</a></li>'; } 
} 
?> 

這是index.php文件:

<?php include('includes/header.php'); ?> 

<?php 
    if ($p == "services") { 
     include("services.php"); 
    } elseif($p == "employees") { 
     include("employees.php"); 
    } elseif($p == "contact") { 
     include("contact.php"); 
    } else { 
     include("home.php"); 
    }; 
?> 

<?php include('includes/footer.php'); ?> 
+0

$ p從哪裏來?必須有某種形式或某種東西,它會發送$ _GET ['p'] – Xatenev

+0

,因此只要轉到每頁的頂部並說$ p = page? – wuno

+0

@NichoDiaz:您是否試圖根據用戶正在查看的頁面包含文件? –

回答

2

這真的取決於你想要做什麼。也許我誤解了你的問題,但include和$ _GET是兩個完全分開的東西。

$ _GET是查詢字符串的數組。因此,例如,如果您的URL是mysite.com/index.php?a=rawr & p = services,那麼$ _GET將是數組(「a」=>「rawr」,「p」=>「services」);如果你沒有在你的URL任何參數賦值給p,然後$ _GET [ 「P」]將是空的

來源: http://www.php.net/manual/en/reserved.variables.get.php

編輯:

我想我已經開始現在就瞭解你的問題。使用你現有的方法會很好,我只是稍微改變代碼:

<?php 
$pages = array(
    "home" => "HOME", 
    "services" => "SERVICES", 
    "employees" => "EMPLOYEES", 
    "contact" => "CONTACT" 
); 
$p = (isset($_GET['p'])) ? $_GET['p'] : ""; 
foreach ($pages as $url => $label) { 
?> 
<li><a <?= $p == $url ? 'class="active"' : ""?> href="index.php?p=<?=$url?>" > <?=$label?> </a></li> 
<?php 
} 
?> 
+0

所以,如果我使用GET構建導航,我需要做的就是添加頁面到$ p那麼我可以使用GET? – wuno

+0

如果你想使用GET並堅持你當前的方法,你的url需要有index.php?p = services(或其他頁面依賴)。然後,當您導航到該URL並設置$ p = $ _GET [「p」]時,$ p應該等於您在URL中設置的任何值(在本例中爲服務)。我不相信這是最有效的方式,但是對於您的設置它將起作用。您可能會根據您的項目需求查看一個PHP框架,如[Zend Framework 2](http://framework.zend.com/)或類似的框架 –

+0

這是做什麼最好的方法。不管我的設置。製作導航欄最有效的方法是什麼? – wuno