我有一个查询可以产生我需要的结果:
SELECT SHOW_NAME, YEAR, CLASS_NAME FROM vwhandlerresults WHERE HANDLER_ID = $gethandlerid ORDER BY YEAR DESC
SHOW_NAME YEAR CLASS_NAME
Show 1 2013 Class 1
Show 1 2013 Class 2
Show 2 2013 Class 1
Show 3 2012 Class 1
等。等
我想在php中创建一个3级无序列表,以便我可以获得类似于以下内容的内容:
2013
Show 1
Class 1
Class 2
Show 2
Class 1
2012
Show 3
Class 1
我进行了搜索和搜索,根本无法理解它。我把它设置为一个级别(年 - >显示)。从搜索开始,我觉得我可能需要一个阵列?
由于
灰色
答案 0 :(得分:0)
从技术上讲,您不需要提前构建阵列。您可以使用简单的“状态机”从数据库中提取数据。
echo '<ul>';
$oldyear = null;
$oldshow = null;
while($row = fetch_result($result)) { // grab a row of DB data
if ($oldyear != $row['year']) {
echo "<li>{$row['year']}<ul>";
}
if ($oldshow != $row['show']) {
echo "<li>{$row['show']}<ul>";
}
echo "<li>{$row['class']}</li>";
}
注意:这不会按原样运作,只是为了让您大致了解如果选择这条路线需要什么
但是,如果你选择使用数组路由,那么它将会提前做一些工作,但是大大简化了输出逻辑:
$data = array();
while($row = fetch_row($result)) {
$year = $row['year'];
$show = $row['show'];
$data[$year][$show][] = $row['class'];
}
echo '<ul>'
foreach($years as $year => $shows) {
echo '<li>', $year, '<ul>';
foreach($shows as $show) {
echo '<li>$show<ul>';
foreach ($show as $class) {
echo '<li>', $class, '</li>';
}
echo '</ul>';
}
echo '</ul>';
}
echo '</ul>';