2013-05-13 54 views
0

我有一个if语句,当我的mysql表=服务器uri,它改变了css类,但我一直无法得到它的工作。这里是我的代码:如果声明不工作时,表= uri

$adminresults = mysql_query('SELECT * FROM menu_admin WHERE position="l"'); 
    $adminresults_array = array(); 
    while ($row = mysql_fetch_assoc($adminresults)) { 
     $img = $row["img"]; 
     $href = $row["location"]; 
     $text = $row["name"]; 
     $uri = $_SERVER["REQUEST_URI"]; 
     if ($href == $uri){ 
     $output .= "<li class='active'><a href='$CFG->wwwroot/{$href}'><p class='cssimg'><img src='$CFG->wwwroot/theme/{$img}'/></p><p class='csstxt'>{$text}</p></a></li>"; 
     } else { 
    $output .= "<li><a href='$CFG->wwwroot/{$href}'><p class='cssimg'><img src='$CFG->wwwroot/theme/{$img}'/></p><p class='csstxt'>{$text}</p></a></li>"; 
     } 
} 
} 
echo "<link rel='stylesheet' href='/theme/css/styles.css' type='text/css'> 
<div id='leftmain'> 
<div class='cssmenu' align='left'> 
<ul>{$output}</ul> 
</div> 
</div>"; 

位置将文件名或路径文件名,例如sitefolder/file.php

+0

REQUEST_URI曾主导 “/” ...尝试'如果(“/".$href == $ URI)'' – Orangepill 2013-05-13 04:55:14

+1

不working'手段?你得到什么输出? – 2013-05-13 04:55:42

+0

你有没有初始化$输出?在这里使用它 - > $ output。= – swapnesh 2013-05-13 04:56:31

回答

0

我怀疑的问题是,$_SERVER["REQUEST_URI"]包括斜杠的URI的开始,而你的$href变量则没有。

也许在比较之前在服务器上使用ltrim。事情是这样的:

$uri = ltrim($_SERVER["REQUEST_URI"],'/'); 
+0

不行。我已经能够指出它与循环有关。 – Ansipants 2013-05-13 05:41:18

+0

你说你已经调试过这个循环,所以如果你在每次循环时都回显$ href和$ uri,那么这些变量每次都设置为什么* exact *? – 2013-05-13 05:48:16

+0

$ href从特定行中回显位置,所以$ output将创建一个行数组,$ uri显然与循环本身无关,因此只有1个结果。如果我回显$ href,它将回显所有通过循环的表的位置结果。所以我们假设第1行= filename1.php,第2行= filename2.php,第3行= filename3.php,回显href将显示filename1.phpfilename2.phpfilename3.php希望这是有道理的... – Ansipants 2013-05-13 05:58:02