#php #css #class #dynamic-data
#php #css #класс #динамические данные
Вопрос:
У меня есть меню, сгенерированное в php таким образом.
<?php
while($rowMenu = mysql_fetch_array($rsMenu)){
$link="category.php?cat=".$rowMenu['MenuItemID'];
$name = utf8_encode($rowMenu['name']);
?>
<a href="<?php echo $link; ?>"><li><?php echo $name; ?></li></a>
<?php
}
?>
и теперь я хочу добавить цвет фона к элементу текущей страницы.Цвет фона определяется в css ( .productActive )
Я ищу добавить класс css в php, как я делаю с помощью javascript, но не нашел никакого решения, поэтому я сделал так
<?php
$cat=$_GET['cat']; /gets the id from the URL
while($rowMenu = mysql_fetch_array($rsMenu)){
$link="category.php?cat=".$rowMenu['MenuItemID'];
$name = utf8_encode($rowMenu['name']);
?>
<a href="<?php echo $link; ?>"><li><?php echo $name; ?></li></a>
<?php
if($cat == $rowMenu['MenuItemID']) {
echo"<a href=".$link."><li class='productActive'>".$nome."</li></a>";
}
}//end of while
?>
Но таким образом добавьте в меню еще один пункт. он повторяет текущий элемент li. Есть ли другой способ??
Спасибо
Комментарии:
1. Это ваш точный код? Если это так, PHP искажен, и вам повезло, что вы получили какой-либо вывод.
2. Рассмотрите возможность использования if /else, а не только if
3. @ Мистер Разочарование Не понимаю, почему. все работает нормально @Михаил да. Я сделал, как вы сказали. Спасибо
4. Я согласен с г-ном Д. Код плохо отформатирован и перемешан. Есть несколько опечаток (например, одиночная косая черта для комментария и nome вместо имени). Я тоже предвижу будущие ошибки. приведенный ниже код Джулио намного легче читать, даже без комментариев
Ответ №1:
while($rowMenu = mysql_fetch_array($rsMenu)){
$link="category.php?cat=".$rowMenu['MenuItemID'];
$name = utf8_encode($rowMenu['name']);
if($cat == $rowMenu['MenuItemID']) {
echo"<a href=".$link."><li class='productActive'>".$name."</li></a>";
} else {
echo"<a href=".$link."><li>".$name."</li></a>";
}
}
Я думаю, это должно сработать
Ответ №2:
while($rowMenu = mysql_fetch_array($rsMenu)){
$link = "category.php?cat=".$rowMenu['MenuItemID'];
$name = utf8_encode($rowMenu['name']);
// add active class?
$class = $cat == $rowMenu['MenuItemID']
? ' class="productActive"'
: '';
?>
<li<?= $class; ?>><a href="<?= $link; ?>"><?= $name; ?></a></li>
<?php
}//end of while
Затем, если элемент совпадает, он добавит класс в тег, в противном случае он ничего не добавит.
Хотя я бы предпочел это:
printf('<li%s><a href="%s">%s</a></li>', $class, $link, $name);
ps. Якоря всегда должны быть внутри <li>
, а не снаружи.
Комментарии:
1. Голосование без причины? Что было не так в приведенном выше коде?