2014-12-08 2 views
1

현재 URL이 링크 클래스 active (부트 스트랩)을 만들기위한 원하는 URL과 같은지 확인하려고합니다.URL = 원하는 URL 확인 (PHP)

<?php 
    If ($currenturl = "show.php?name=123") { 
     ?><li class="active"><a href="show.php?name="123"">123</a></li><?php 
    }else{ 
     ?><li class=""><a href="show.php?name="123"">123</a></li><?php 
    } 
?> 

현재 URL - 나는 show.php?name=456

see

+0

basename ($ _ SERVER [ 'PHP_SELF']); –

답변

4

에있어 경우에 지금>$currenturl = $_SERVER['REQUEST_URI']

, 난 당신이 내 정확한 비교를 가지고 있는지 확인이가 if. 당신은 $urlpage를 설정했지만 $currenturl 비교 :

if($currenturl = "show.php?name=123") // assignment = 
    // changes $currenturl to "show.php?name=123" 
    // and then tests if("show.php?name=123") equivalent to if(true) 
    // see also http://stackoverflow.com/questions/5940626/evaluation-of-assignment-in-php 

if($currenturl == "show.php?name=123") // comparison == 

둘째 :

주 차이를 : 현재 대입 연산자를 사용하고 있습니다. 사용 $urlpage

코드 :

<?php $urlpage = $_SERVER['REQUEST_URI']; ?> 
<?php if ($urlpage == "/show.php?nom=123") { ?> 
    <li class="active"><a href="/show.php?nom=123">123</a></li> 
<?php } else { ?> 
    <li class=""><a href="/show.php?nom=123">123</a></li> 
<?php } ?> 

삼항 연산자를 사용하는 대신 :

<li <?php echo ($urlpage == "/show.php?nom=123") ? 'class="active"' : ''; ?>><a href="/show.php?nom=123">123</a></li> 

모든 페이지에 적용 :

<?php $pages = array('123', '456', '789'); ?> 
<ul> 
    <li <?php echo (!isset($_GET['nom']) ? 'class="active"' : ''); ?>><a href="show.php">Home</a></li> 
    <?php foreach($pages as $page): ?> 
     <?php if (isset($_GET['nom']) && $_GET['nom'] == $page) { ?> 
      <li class="active"><a href="/show.php?nom=<?php echo $page; ?>"><?php echo $page; ?></a></li> 
     <?php } else { ?> 
      <li class=""><a href="/show.php?nom=<?php echo $page; ?>"><?php echo $page; ?></a></li> 
     <?php } ?> 
    <?php endforeach; ?> 
</ul> 
+0

@dotpush 보충 정보를 추가해도 괜찮습니까? 답안의 대안과 일부이기 때문에 세 가지 방식을 제거 할 필요가 없습니다. – Ghost

+0

작동하지 않습니다 ... 작동하지 않았습니다! 또한, 링크를 클릭하면'show.php? name ='로 이동하지만 123이나 다른 것은 없습니다. –

+0

@Ghost : Oups, 죄송합니다. 세 부분 제거를 위해 나는 보지 못했습니다. – dotpush

0

또 다른 방법은 $ _GET을 사용하는 것입니다

if(isset($_GET['name'])) 
if($_GET['name'] == '123') 
    ... 

+0

네,'If ($ _GET [ 'name'] == '123')'로 바뀌지 만 오류가 발생했습니다 :'Notice : C : \에있는 정의되지 않은 인덱스 : xampp \ htdocs \ cadeau noel \ cadeau.php on line 40'. Line 40 ->'If ($ _GET [ 'name'] == '123') {' –

+0

URL은 어떻게 생겼습니까? (귀하의 브라우저에서) – DdD

+0

그 이유는 URL에? name = 123 또는 name = 124, name = 125 등이없는 경우'if (isset ($ _ GET [ 'name']))' URL의 끝 부분에 경고가 표시됩니다. 그래서 코드의 앞부분에 다음과 같이 덧붙입니다. '(! isset ($ _ GET [ 'name'])) $ _GET [ 'name'] = ''; ' – DdD