Простой подход
- Установите
prev_desc
на NULL
- Для каждой строки выведите
text
- Если
description
не равен prev_desc
, добавьте описание нового «раздела» и задайте prev_desc <- description
Например: 1 (не проверено!),
$prev_desc = null;
while ($row = mysql_fetch_assoc(...)) {
if ($prev_desc != $row['description']) {
print '<h1>' . $row['description'] . '</h1>';
$prev_desc = $row['description'];
}
print $row['text'] . '<br />'; // Formatting needed
}
Примечание : Вы должны оставить ORDER BY <description-column>
, чтобы строки были "сгруппированы". В противном случае этот простой подход не будет работать.
Менее подход к презентации
Меня можно считать более "чистым", чтобы создать некий 2D-контейнер для "категоризации" извлеченных данных, например,
$items = array(
'Content needs updating' => array(
'Lack of ...',
'The intra...'
),
...
);
Затем вы можете зациклить эти элементы, например, 1 :
foreach ($items as $desc => $texts) {
print '<h1>' . $desc . '</h1>';
foreach ($texts as $text) {
print $text . '<br />';
}
}
1 Как заметил @bobince, убедитесь, что контент, поступающий непосредственно в окончательный HTML, правильно экранирован, см., Например. htmlspecialchars()
.