1

我想以<ul> <li>格式显示我的数据库记录。我使用免费模板来设计我的前端。我正在读取这样的数据库数据

while ($row = mysql_fetch_assoc($result)) {
    $categoryname = $row['category_name'];
}

在循环中我必须显示这样的记录

<li class="odd"><a href="services.html">Processors</a></li>
         <li class="even"><a href="services.html">Motherboards</a></li>
        <li class="odd"><a href="1_service.html">Processors</a></li>
        <li class="even"><a href="2_services.html">Motherboards</a></li>
         <li class="odd"><a href="3_services.html">Desktops</a></li>
        <li class="even"><a href="4_services.html">Laptops & Notebooks</a></li>
         <li class="odd"><a href="5_services.html">Processors</a></li>
         <li class="even"><a href="6_services.html">Motherboards</a></li>
        </ul>

怎么做这样的。请建议

如果我想像这样为每个喜欢提供单独的页面链接

<li class="odd"><a href="services.html">Processors</a></li>
         <li class="even"><a href="services.html">Motherboards</a></li>
        <li class="odd"><a href="services.html">Processors</a></li>
        <li class="even"><a href="services.html">Motherboards</a></li>
         <li class="odd"><a href="services.html">Desktops</a></li>
        <li class="even"><a href="services.html">Laptops & Notebooks</a></li>
         <li class="odd"><a href="services.html">Processors</a></li>
         <li class="even"><a href="services.html">Motherboards</a></li>
        </ul>

那怎么办呢?

4

6 回答 6

3

您需要观察迭代以判断您是处于偶数还是奇数周期:

$output  = "";
$counter = -1;

while ( $row = mysql_fetch_assoc( $result ) ) {
  $class = $counter++ % 2 === 0 ? "even" : "odd" ;
  $href  = $row["category_url"];
  $text  = $row["category_name"];
  $output .= "<li class='{$class}'><a href='foo?id={$href}'>{$text}</a></li>";
}

echo "<ul>{$output}</ul>";

原生 CSS 解决方案

确定哪些元素是奇数,哪些是偶数并不一定需要用 PHP 来完成。事实上,它并不真正需要添加一个类名来设置每个列表项的样式。CSS 有一个花哨的选择器,:nth-child(n)可以为你处理这个问题:

li:nth-child(even) {
    background: #f1f1f1;
    color: #CCC;
}

演示:http: //jsfiddle.net/rquXK/

这意味着您可以避免确定 的值$class,并将该逻辑移至您的 CSS。请记住,一些较旧的浏览器不支持该功能。

支持表:http ://caniuse.com/#feat=css-sel3

于 2012-05-30T05:58:54.313 回答
0
<?php

$index = 0;
while ($row = mysql_fetch_assoc($result)) {
    $className = ($index %2 == 0) ? "even" : "odd" ;
    $categoryName = $row['category_name'];
?>

<li class="<?php echo $className;?>"><a href="services.html"><?php echo $categoryName;?> </a></li>

<?php 
  $index++
}
?> 
于 2012-05-30T05:59:25.747 回答
0

只需保留一个计数器,在循环中递增它,如果它是奇数,则将类设置为奇数,如果是偶数,则将类设置为偶数。所以基于@bsdnoobz 的回答:

$i = 0;
while ($row = mysql_fetch_assoc($result)) {
    $class = $i % 2 == 0 ? 'even' : 'odd';
    echo "<li class='$class'>".$row['category_name'].'</li>';
    $i++;
}
于 2012-05-30T05:59:31.597 回答
0
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
   echo '<li class="'.($i++ % 2 == 0 ? 'odd' : 'even').'">'.$row['category_name'].'</li>';
}
于 2012-05-30T05:57:27.873 回答
0
$parentid = 0; // assuming that 0 is the main category.

get_sub_cats($parentid);

function get_sub_cats($parentid) {
    $sql = "SELECT * FROM table_name WHERE parent_id = ".$parentid.""; 
    $run = mysql_query($sql);

    echo '<ul>';

    while ($rec = mysql_fetch_assoc($run)) { 
        echo '<li />'.$rec['study']; 
        get_sub_cats($rec['id']);
    }

    echo '</ul>';

}

希望它有效....

于 2012-05-30T06:01:58.377 回答
0

使用该class属性来表示偶数或奇数行/条目表明您正在使用 CSS 来设置它们的样式。

根据您仍需要支持的浏览器,这可能是必要的。但是,通常它不再是:

警告:在撰写本文时(2003 年 2 月),主要浏览器还不支持“nth-child”选择器(2001 年 11 月推出)

http://caniuse.com/#search=nth-child

CSS 示例:

li:nth-child(even) {background: #CCC}
li:nth-child(odd) {background: #FFF}

请参阅CSS:偶数和奇数规则

于 2012-05-30T07:51:00.067 回答