2010-06-06 47 views
0

我想用PHP和MySQL构建一个活动的页面菜单,并且遇到困难的时候修复错误。在while语句中,我有一个if语句可以让我觉得合适。基本上我想我是说,“thispage”等于基于pageID的“标题”,并且如果“thispage”等于“title”,那么echo id =“active”,则菜单循环播放。 由于PHP活动页面代码 - 我找不出解析错误

<?php 
    mysql_select_db($database_db_connection, $db_connection); 
    $query_rsDaTa = "SELECT * FROM pages WHERE pagesID = 4"; 
    $rsDaTa = mysql_query($query_rsDaTa, $db_connection) or die(mysql_error()); 
    $row_rsDaTa = mysql_fetch_assoc($rsDaTa); 
    $totalRows_rsDaTa = mysql_num_rows($rsDaTa); 

    $query_rsMenu = "SELECT * FROM menu WHERE online = 1 ORDER BY menuPos ASC"; 
    $rsMenu = mysql_query($query_rsMenu, $db_connection) or die(mysql_error()); 

$thisPage = ($row_rsDaTa['title']); 
?> 


<link href="../css/MainStyle.css" rel="stylesheet" type="text/css" /> 

<h2><?php echo $thisPage; ?></h2> 

<div id="footcontainer"> 
<ul id="footlist"> 
<?php 
     while($row_rsMenu = mysql_fetch_assoc($rsMenu)) { 
     echo (" <li" . <?php if ($thisPage==$row_rsDaTa['title']) echo id="active"; ?> . "<a href=\"../" . $row_rsMenu['menuURL'] . "\">" . $row_rsMenu['menuName'] . "</a></li>\n"); 
     } 
     echo "</ul>\n"; 
?> 
</div> 

<?php 
    mysql_free_result($rsMenu); 
    mysql_free_result($rsDaTa); 
?> 
+0

它是不能被用来帮助人太本地化的问题。 – 2010-06-06 04:52:31

回答

-1

试试这个:

<?php 
    mysql_select_db($database_db_connection, $db_connection); 
    $query_rsDaTa = "SELECT * FROM pages WHERE pagesID = 4"; 
    $rsDaTa = mysql_query($query_rsDaTa, $db_connection) or die(mysql_error()); 
    $row_rsDaTa = mysql_fetch_assoc($rsDaTa); 
    $totalRows_rsDaTa = mysql_num_rows($rsDaTa); 

    $query_rsMenu = "SELECT * FROM menu WHERE online = 1 ORDER BY menuPos ASC"; 
    $rsMenu = mysql_query($query_rsMenu, $db_connection) or die(mysql_error()); 

$thisPage = ($row_rsDaTa['title']); 
?> 


<link href="../css/MainStyle.css" rel="stylesheet" type="text/css" /> 

<h2><?php echo $thisPage; ?></h2> 

<div id="footcontainer"> 
<ul id="footlist"> 
<?php 
    while($row_rsMenu = mysql_fetch_assoc($rsMenu)) { 
    $id = ($thisPage==$row_rsDaTa['title']) ? "id='active'" : ""; 
    echo "<li " . $id . "<a href='../" . $row_rsMenu['menuURL'] . "' >" . $row_rsMenu['menuName'] . "</a></li>\n"; 
    } 
?> 
</ul> 
</div> 
<?php 
    mysql_free_result($rsMenu); 
    mysql_free_result($rsDaTa); 
?> 
+0

感谢大家的帮助。 我得到了这个工作很好,在我的最后几个额外的MODS。我在页表中添加了一个MenuID列来引用菜单表。现在对我来说似乎更有效率,并且对于您发布的代码稍微微调了一下,我将row_rsDaTa ['title']引用更改为row_rsDaTa ['menuID'],并且都很开心! 再次感谢 – dmschenk 2010-06-07 19:22:29

0

解析错误可以通过码连续除去各种块进行定位。
删除您的代码的一些部分,并看到,如果错误仍然存​​在。说,你可以暂时删除HTML部分。如果错误得到消除 - 这是在这一部分。现在,您可以将这部分分成较小的块等等。因此你可以找到一条错误的线路。

此外,错误消息通常包含有关错误的一些重要信息。

1

一种大的毛茸茸的线。我认为你需要通过将它分成多行来简化它。此外,你的产品的这部分应该做什么?

echo id =“active”;

你的意思是 echo“id = \”active \“”;

注我“身份证”前加上一个空格,因为你没有一前一后李

+0

是的你是正确的......谢谢 – dmschenk 2010-06-07 19:28:40

0

首先,你必须嵌套在另一个<?php<?php。这会导致:

syntax error, unexpected '<' 

让我们删除这两个<?php?>。现在我看到你希望你输出id,但是你不会告诉PHP它是一个字符串。

echo (" <li" . if ($thisPage==$row_rsDaTa['title']) echo ' id="active"'; ... 

你可能要为大家介绍的是将存储变量:包装在单引号,这样echo id="active";成为echo ' id="active"';

有了这个出路,你不能if语句就这样contatenate的字符串id="active"如果您在当前页面上。

$id = ''; 
if ($thisPage==$row_rsDaTa['title']) { 
    $id = ' id="active"'; 
} 

这段代码可能是这样的重写时:

while($row_rsMenu = mysql_fetch_assoc($rsMenu)) { 
    $active = ''; 
    if ($thisPage==$row_rsDaTa['title']) { 
     $id = ' id="active"'; 
    } 
    echo (" <li" . $id . "<a href=\"../" . $row_rsMenu['menuURL'] . "\">" . 
     $row_rsMenu['menuName'] . "</a></li>\n"); 
} 
echo "</ul>\n"; 
+0

非常感谢你的解释!他们对我非常有帮助。我改变了活动=''为id ='',这工作得很好。我非常感谢帮助 – dmschenk 2010-06-07 19:26:24