Есть несколько вопросов для решения. Во-первых, UL расшифровывается как «Неупорядоченный список» и прекрасно, если все, что у вас было, - это первый столбец данных. Я могу только предположить, что вам нужно будет заполнить больше столбцов данных (по горизонтальной оси), поэтому UL - это неправильный родительский тег. Если был правильный тег, вам нужно добавить открывающий и закрывающий теги LI (для элемента списка).
@ Комментарий Джонатана Сэмпсона верен. Вы увидите много постов здесь и в других местах онлайн, в которых говорится о том, как злые таблицы, и это правда, если их неправильно использовать в целях верстки. Исходя из того, что вы нам показали, у вас есть табличные данные, и должен использовать тег Table в качестве родителя.
Обновление
Кажется, я неправильно понял природу ваших данных. После перехода туда и обратно это - ваше решение:
<style type="text/css">
.column
{
float: left;
display: inline;
clear: none;
margin: 0 5px;
}
.column UL LI
{
list-style: none;
}
.category
{
font-weight: bold;
}
</style>
<div> <!-- this is an outer/wrapper/container -->
<?php if($this->categories !== false): ?>
<?php foreach($this->categories as $category):?>
<div class="column">
<ul>
<li class="category"><?=$category['name']?></li> <!-- header data... -->
<?php if($this->artistsHelper($category['id']) !== false): ?>
<?php foreach($this->artistsHelper($category['id']) as $artist): ?>
<li><?=$artist['name']?></li> <!-- no class info here because its just text -->
<?php endforeach; ?>
<?php endif; ?>
</ul>
</div>
<?php endforeach; ?>
</div>
Есть несколько различий в том, что я написал здесь и с чего вы начали:
- Обернуть каждый столбец в плавающем DIV
- Заверните каждого «художника» в пару LI
- Заверните все это в контейнер DIV
- Установить внешний вид строки заголовка в таблице стилей