Я пытаюсь создать активное меню страниц с 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);
?>
Попробуйте следующее:
<?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);
?>
вид большой, волосатой линии. Я думаю, вам нужно сделать это немного легче, разделив его на несколько строк. также, что должна делать эта часть вашей линии?
echo id = "active";
Вы имеете в виду echo "id = \" active\"";
note Я добавил пробел перед "id", потому что у вас его нет после LI
Сначала у вас есть <?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";
Ошибки анализа могут быть расположены путем последовательного удаления различных блоков кода.
Удалите часть кода и посмотрите, если ошибка сохраняется.
Скажем, вы можете временно удалить часть html. Если ошибка устранена - она в этой части. Теперь вы можете разделить эту часть на более мелкие блоки и так далее. Таким образом, вы можете найти ошибочную строку довольно близко.
Кроме того, сообщение об ошибке обычно содержит важную информацию об ошибке.