2014-01-14 50 views
0

我在創建php if語句時遇到了問題,以匹配我對導航選擇的需求。 每當用戶從一個頁面移動到另一個頁面時,我希望導航按鈕的CSS改變,特別是匹配用戶當前正在查看的頁面。這是通過使用URL完成的。URL請求URI - 如果URL包含X do Y else do Z PHP

columns = nav的默認CSS。 selected =導航選擇的頁面CSS。

我一直在研究一段代碼來完成這項工作。目前它使用URL來搜索所需的字符串; $find1 ='index

我通過將$ selector變量設置爲導航的默認樣式來初始化代碼,並將其默認爲未被查看的頁面。然後它獲取URL並搜索字符串;這然後用於啓動if語句;其中變量$選擇變成$selector = 'selected'

<?php $selector = 'columns'; ?> 

<?php 
$path1 = $_SERVER['REQUEST_URI']; 
$find1 = 'index'; 
$pos1 = strpos($path1, $find1); 
if ($pos1 !== false): $selector = 'selected'; ?> 


<a href="index.php"><div id="<?php echo $selector;?>">Home</div></a><?php endif ?> 

當加載頁面時,特定的導航按鈕顯示正確的CSS。但其他導航按鈕不顯示,暗示$選擇器沒有被設置爲任何事件的事實。

然後我嘗試了另一種編碼函數的方式;

我加「2」所有的變量,以確保重複和毛刺是沒有問題的,以及改變頁面名稱:當「索引頁」加載導航

<?php $selector2 = 'columns'; ?> 

<?php 
$path2 = $_SERVER['REQUEST_URI']; 
$find2 = 'about'; 
$pos2 = strpos($path2, $find2); 
if ($pos2 !== false): $selector2 = 'selected'; else: $selector2 = 'columns';?> 


<a href="about.php"><div id="<?php echo $selector2;?>">About</div></a><?php endif ?> 

這一次按鈕都不見了。

我不確定在使用此代碼時出錯的位置或方式,但我相信這取決於我的if語句。

如果有人會幫助重新創建或重新調整此代碼,使其工作或接近工作,我將不勝感激!

在此先感謝你們。

回答

0

感謝您的上一個答案!我已經找到了一個替代方案。因此,我將其列爲另一個答案。

首先,通過爲鏈接到彩色導航欄的網站上的每個頁面設置「頁面變量」。例如;在索引頁面上,變量集合將等於「索引」。

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

    <?php $thisPage = 'index' ?> 

在資產淨值包括,下面的腳本必須添加到每個HREF或者div標籤(但是你可以列出他們):

<a href="index.php"><div <?php if ($thisPage=="index") { 
echo " id=\"selected\""; } else { echo " id=\"columns\""; } ?> >Home</div></a> 

此代碼需要設置的變量名該頁面並要求天氣等於某個值或字符串。如果匹配,選中的「id = \」會在保持導航按鈕的div標籤內回顯。

如果它沒有包含所需的字符串或值,它會改爲(else),將「id = \」列\「」回顯到導航按鈕所在的位置。

我有一個間歇性的錯誤,在Chrome瀏覽器中使用這種方法,奇怪的是,爲了解決這個問題,我簡單地打了一個球,並將該值作爲一個變量添加進了一個不明的索引。 <?php $none ='id=\"columns\"' ?>。我知道這個變量不會被使用,它不會導致任何進一步的錯誤。它解決了這個問題。

2

您的<?php endif ?>最後包含了您的HTML,因此whern if ($pos2 !== false):爲true,您的HTML將不會顯示。

<?php $selector2 = 'columns'; ?> 

<?php 
$path2 = $_SERVER['REQUEST_URI']; 
$find2 = 'about'; 
$pos2 = strpos($path2, $find2); 
if ($pos2 !== false): $selector2 = 'selected'; else: $selector2 = 'columns'; endif; ?> 


<a href="about.php"><div id="<?php echo $selector2;?>">About</div></a>