Grouping records from while loop | PHP
I'm trying to group down records by their priority levels, e.g.
--- Priority: High ---
Records...
--- Priority: Medium ---
Records...
开发者_运维技巧--- Priority: Low ---
Records...
Something like that, how do I do that in PHP? The while loop orders records by the priority column which has int value (high = 3, medium = 2, low = 1). e.g. WHERE priority = '1'
The label: "Priority: [priority level]" has to be set above the grouped records regarding their level
EDIT:
<?php
while($row = mysql_fetch_array($result))
{
echo '<h1>Priority Level: ' . $row['priority'] . '</h1>';
echo $row['name'];
}
?>
Like that piece of code - the
tags is the label which seperates records regarding their priority level.If you're sure the results are ordered by priority then something as trivial as this:
$priority = null;
while($row = mysql_fetch_array($result))
{
if( $row['priority'] != $priority )
{
echo '<h1>Priority Level: ' . $row['priority'] . '</h1>';
$priority = $row['priority'];
}
echo $row['name'];
}
In other words, you keep track of the current priority level in the $priority
variable. Then test whether the priority has changed in the if
condition. If so, echo
the priority and set the current priority to the priority found in the current row.
Mind you, this only works as expected (truly grouped once) if the rows are ordered by priority. In other words, when different priorities are not scattered across the resultset.
If you use mysql why would not you use DB ordering capabilities?
SELECT *
FROM items
ORDER BY priority DESC
精彩评论