根据唯一列值打印<li>列表</li>

时间:2014-01-29 14:20:25

标签: php mysql

我尝试使用以下功能打印基于唯一列值的几个列表:

<?php
function echoList($country) {
$result = mysql_query("SELECT * FROM `$country`");
$previousClass = '';

while($row = mysql_fetch_array($result)){
  $thisClass = $row['class'];
  if($thisClass != $previousClass) {
        echo '<h3>' . $thisClass.'</h3>';
  }
  echo '<ul>';
  $id = $row['id'];
  echo '<li><a href="' . $country . '/'. $id . '">' . $id . '</a></li>';
  echo '</ul>';  
  $previousClass = $thisClass;
}
}

表格是这样的:

id,class,description
1,B,description1
2,B,description2
3,C,description3
4,B,description4
5,B,description5

但这是重复而不是在同一个UL中分组,我试图分组,但我不知道怎么做, 我喜欢的是以这种方式打印:

<h3>B</h3>
<ul>
    <li>1</li>
    <li>2</li>
    <li>4</li>
    <li>5</li>
</ul>
<h3>C</h3>
<ul>
    <li>1</li>
</ul>

如果你们中的任何人可以帮助这个,谢谢

1 个答案:

答案 0 :(得分:2)

<?php
function echoList($country) {
$result = mysql_query("SELECT * FROM `$country` order by class, id");
$previousClass = '';

while($row = mysql_fetch_array($result)){
  $thisClass = $row['class'];
  if($thisClass != $previousClass) {
        if ($previousClass) { echo '</ul>';  }
        echo '<h3>' . $thisClass.'</h3>';
        echo '<ul>';
  }

  $id = $row['id'];
  echo '<li><a href="' . $country . '/'. $id . '">' . $id . '</a></li>';

  $previousClass = $thisClass;
}
echo '</ul>';
}

像这样的东西。此外,不推荐使用mysql_ *函数。