Thread: formatting output: grouping results with identical fields

formatting output: grouping results with identical fields

From
Molly Gibson
Date:
Hi list,
Textile geek-grrl here--I recently created a postgres
database to keep my fabric, pattern, & project
inventory.  (Do I win a prize for 'weirdest thing for
which someone has used postgres'?)  I am at the point
where I would like to refine the user interface, even
though I'm the only one who will ever use it.

Currently I have this query:
SELECT pattern_category, pattern_manufacturer,
pattern_number, pattern_desc
FROM patterns
ORDER BY pattern_category, pattern_manufacturer,
pattern_number;

which I have output into a plain ol' table like so
(code snippet only, I know it doesn't produce valid
html)
while ($i < $num) {
    $row = pg_fetch_object($pattern_info,$i);
    print ("<TD>$row->pattern_category</TD>
<TD>$row->pattern_manufacturer</TD>
<TD>$row->pattern_number</TD>
<TD>$row->pattern_desc</TD>
</TR>\n");
    $i++;
}

This is great for my purposes, but I'd like to clean
up the table a bit more and have the category only
print once each time it occurs, and the manufacturer
only print once in each category.

Here is what I came up with:
while ($i < $num) {
    $row = pg_fetch_object($pattern_info,$i);
    if ($row->pattern_category != $newcategory) {
    //we have a new category heading
    $newcategory = $row->pattern_category;
    print ("<TR><TD>$newcategory</TD></TR>\n");
    }
    if ($row->pattern_manufacturer !=
$newmanufacturer) {
    //we have a new manufacturer sub-heading
        $newmanufacturer = $row->pattern_manufacturer;
        print ("<TR
class=\"manufacturer\"><TD>$newmanufacturer</TD></TR>\n");
    }
    //print the rest of the stuff
    print
("<TD>$row->pattern_number</TD><TD>$row->pattern_desc</TD></TR>\n");
    $i++;
    }

I've been poking around php.net and I didn't find
anything--but I can't be the only one who wants to do this.

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com


Re: formatting output: grouping results with identical fields

From
"scott.marlowe"
Date:
On Fri, 9 May 2003, Molly Gibson wrote:

> Hi list,
> Textile geek-grrl here--I recently created a postgres
> database to keep my fabric, pattern, & project
> inventory.  (Do I win a prize for 'weirdest thing for
> which someone has used postgres'?)

I'm certain there's someone out there doing something stranger than this.

> This is great for my purposes, but I'd like to clean
> up the table a bit more and have the category only
> print once each time it occurs, and the manufacturer
> only print once in each category.

What you can do is something like (this is pseudo code) before you start
your while loop:

$current_category = <category from first row>

then in your while loop, check to see if it's changed:

if ($current_category != $new_category){
    print $new_category;
    $current_category = $new_category;
}

Get the idea? It works a charm for things like this.


Re: formatting output: grouping results with identical fields

From
Molly Gibson
Date:
--- "scott.marlowe" <scott.marlowe@ihs.com> wrote:
>
> What you can do is something like (this is pseudo
> code) before you start
> your while loop:
>
> $current_category = <category from first row>
>
> then in your while loop, check to see if it's
> changed:
>
> if ($current_category != $new_category){
>     print $new_category;
>     $current_category = $new_category;
> }
>
> Get the idea? It works a charm for things like this.

Gotcha...nice to know I was on the right track.
Thanks!

mol

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com