2010-06-06 70 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