2010-06-06 4 views
0

PHP 및 MySQL로 활성 페이지 메뉴를 작성하려고하는데 오류를 수정하는 데 어려움이 있습니다. while 문에서 나는 맞는 문장을 가지고있다. 기본적으로 나는 "thispage"가 pageID에 기반한 "title"과 같고 "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

그것은 누군가를하는 데 도움이 될 수 없습니다 너무 지역화 된 질문입니다. –

답변

-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

모두에게 도움을 주셔서 감사합니다. 내 끝에 몇 가지 추가 개조로 잘 작동하도록했습니다. 메뉴 테이블을 참조하기 위해 페이지 테이블에 MenuID 열을 추가했습니다. 지금 나에게 더 효과적이었고, 코드에 약간의 tweek를 붙여 row_rsDaTa [ 'title'] refs를 row_rsDaTa [ 'menuID']로 바꿨다. 모두 만족 스럽다! 다시 한 번 감사드립니다. – dmschenk

0

구문 오류는 다양한 코드 블록을 연속적으로 제거하여 찾을 수 있습니다.
코드의 일부분을 제거하고 오류가 지속되면보십시오. HTML 부분을 일시적으로 제거 할 수 있습니다. 오류가 제거되면이 부분에 있습니다. 이제이 부분을 작은 블록으로 나눌 수 있습니다. 따라서 오류가있는 줄을 아주 가깝게 찾을 수 있습니다.

또한 오류 메시지에는 대개 오류에 대한 중요한 정보가 들어 있습니다.

1

큰 털이 줄. 나는 그것을 한 줄 이상으로 나누면 조금 더 쉽게 만들 필요가 있다고 생각합니다. 또한,이 부분이 무엇을해야할까요?

echo id = "active";

너는 을 의미합니까? "id = \"active \ ""; 당신이 LI

+0

네, 맞습니다 ... 감사합니다 – dmschenk

0

먼저 차례가 없기 때문에

참고 내가 "ID"앞에 공백을 추가, 당신은 <?php 다른 <?php 안에 중첩이있다. 이 발생합니다

syntax error, unexpected '<' 

이의이 <?php?> 모두 제거하자. 이제 id를 출력하길 원하지만 PHP에게 문자열이라고 말하지는 않습니다.

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

당신은 저장할 변수를 소개 할 수 있습니다 : 문 바로 그런 경우 echo id="active";이 방법이 밖으로 echo ' id="active"';

이되도록 단일 따옴표로 감싸, 당신은을 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

대단히 explainations 주셔서 감사합니다 !!! 그들은 나에게 매우 도움이되었다. 나는 active = ''를 id = ''로 바꿨고 이것은 잘 돌아갔다. 정말 도움을 주셔서 감사합니다 – dmschenk