PHP код активной страницы - я не могу понять ошибку разбора

0

Я пытаюсь создать активное меню страниц с PHP и MySQL, и мне трудно найти ошибку. В выражении while у меня есть оператор if, который дает мне возможность. В принципе, я думаю, что я говорю, что "эта страница" равна "title" на основе pageID и, поскольку меню зацикливается, если "эта страница" равна "title", тогда echo id = "active". Благодаря

<?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
    Это слишком локализованный вопрос, который никому не поможет.
Теги:

4 ответа

-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 в таблицу страниц для ссылки на таблицу меню. теперь мне это показалось более эффективным, и с этим небольшим изменением в коде, который вы опубликовали, я изменил row_rsDaTa ['title'] refs на row_rsDaTa ['menuID'], и все счастливы! еще раз спасибо
1

вид большой, волосатой линии. Я думаю, вам нужно сделать это немного легче, разделив его на несколько строк. также, что должна делать эта часть вашей линии?

echo id = "active";

Вы имеете в виду echo "id = \" active\"";

note Я добавил пробел перед "id", потому что у вас его нет после LI

  • 0
    Да вы правы ... спасибо
0

Сначала у вас есть <?php, вложенный внутри другого <?php. Это вызывает:

syntax error, unexpected '<'

Удалите как <?php, так и ?>. Теперь я вижу, что вы хотите, чтобы вы выводили идентификатор, но вы не говорите PHP, что это строка. Оберните его в одинарные кавычки, чтобы echo id="active"; стал echo ' id="active"';

С этой точки зрения вы не можете связать оператор if так:

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

Возможно, вы захотите ввести переменную, которая сохранит строку 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
    Большое спасибо за объяснения !!! Они были очень полезны для меня. Я изменил active = '' на id = '', и это сработало хорошо. Я очень ценю помощь
0

Ошибки анализа могут быть расположены путем последовательного удаления различных блоков кода.
Удалите часть кода и посмотрите, если ошибка сохраняется. Скажем, вы можете временно удалить часть html. Если ошибка устранена - она ​​в этой части. Теперь вы можете разделить эту часть на более мелкие блоки и так далее. Таким образом, вы можете найти ошибочную строку довольно близко.

Кроме того, сообщение об ошибке обычно содержит важную информацию об ошибке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню