URL REQUEST URI - 如果URL包含X,则执行Z,否则执行Z PHP

时间:2014-01-14 22:07:23

标签: php css url if-statement transition

我在创建php if语句时遇到问题,以满足我对导航选择的需求。 每当用户从一个页面移动到另一个页面时,我希望导航按钮的CSS改变,特别是匹配用户当前正在查看的页面。这是通过使用URL完成的。

columns = nav的默认CSS。 选中=页面选择导航的CSS。

我一直在编写一段代码来完成这项工作。目前,它使用URL来搜索所需的字符串; $find1 ='index

我通过将$ selector变量设置为导航的默认样式来初始化代码,将其默认为未被查看的页面。然后它获取URL并搜索字符串;然后用它来启动if语句;变量$ selector的位置变为$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。但是,不会显示其他导航按钮,暗示$ selector未被设置为该事件的任何内容。

然后我尝试了另一种编码函数的方法;

我在所有变量中添加了“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语句。

如果有人帮助重新创建或重新编写此代码以使其工作或更接近工作,我将不胜感激!

先谢谢你们。

2 个答案:

答案 0 :(得分:2)

最后您的<?php endif ?>包含您的HTML,因此w if ($pos2 !== false):为真,您的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>

答案 1 :(得分:0)

感谢您之前的回答!我找到了另一种选择;因此,我将其列为另一个答案。

首先,通过为站点上链接到彩色导航栏的每个页面设置“页面变量”来继续。例如;在索引页面上,变量集将等于“index”。

<!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 = \”columns \“”回显到导航按钮所在的位置。

我在Chrome中出现了间歇性错误,对于一个未识别的索引,奇怪的是,对于“”id = \“columns \”“”,为了解决此问题,我只是简单地播放了球并将值添加为变量。{ {1}}。我知道这个变量不会被使用,也不会导致任何进一步的错误。它解决了这个问题。