RE: [PHP] trouble formatting output
| From: | PHP Devs @ Matter Solutions | Date: | Sun, 11 May 2003 23:13:37 +0000 |
| Subject: | RE: [PHP] trouble formatting output | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-147234@lists.php.net to get a copy of this message | ||
Nice little problem, just break it down into logical steps.
> From: Brian V Bonini wrote
>
> DB data is:
> id month company title name part
>
> I'm grouping and ordering the data in my SQL query and basically only
> want to display the month, company, and title ONLY when they change.
>
> So for instance I may have:
>
> 2002-04-01 company1 title1 name1 part1
> 2002-04-01 company1 title1 name2 part2
> 2002-04-01 company1 title1 name3 part3
> 2002-04-01 company1 title1 name4 part4
> 2002-04-01 company1 title2 name1 part1
> 2002-04-01 company1 title2 name2 part2
> 2002-05-01 company2 title3 name1 part1
> 2002-05-01 company2 title3 name2 part2
> 2002-05-01 company2 title3 name3 part3
> 2002-05-01 company2 title3 name4 part4
>
> and want to format like:
>
1) get sql select to order by month, title, name.
2) then read all results row by row by begin each step when the parameters
value changes...
My test code...
<?php
$array[] = array('month'=>"2002-04-01",
'company'=>"company1",
'title'=>"title1", 'name'=>"name1",
'part'=>"part1");
$array[] = array('month'=>"2002-04-01",
'company'=>"company1",
'title'=>"title1", 'name'=>"name2",
'part'=>"part2");
$array[] = array('month'=>"2002-04-01",
'company'=>"company1",
'title'=>"title1", 'name'=>"name3",
'part'=>"part3");
$array[] = array('month'=>"2002-04-01",
'company'=>"company1",
'title'=>"title1", 'name'=>"name4",
'part'=>"part4");
$array[] = array('month'=>"2002-04-01",
'company'=>"company1",
'title'=>"title2", 'name'=>"name1",
'part'=>"part1");
$array[] = array('month'=>"2002-04-01",
'company'=>"company1",
'title'=>"title2", 'name'=>"name2",
'part'=>"part2");
$array[] = array('month'=>"2002-05-01",
'company'=>"company2",
'title'=>"title3", 'name'=>"name1",
'part'=>"part1");
$array[] = array('month'=>"2002-05-01",
'company'=>"company2",
'title'=>"title3", 'name'=>"name2",
'part'=>"part2");
$array[] = array('month'=>"2002-05-01",
'company'=>"company2",
'title'=>"title3", 'name'=>"name3",
'part'=>"part3");
$array[] = array('month'=>"2002-05-01",
'company'=>"company2",
'title'=>"title3", 'name'=>"name4",
'part'=>"part4");
print "<pre>";
$line_break = "\r\n";
//while ( $row = mysql_fetch_array($result) ) {
foreach ( $array as $row ) {
// ACHTUNG! uncomment/comment line above as appropriate
if ($row['month'] != $last['month']) {
print $row['month'].$line_break;
}
if ($row['company'] != $last['company']) {
print " ".$row['company'].$line_break;
}
if ($row['title'] != $last['title']) {
print " -".$row['title'].$line_break;
}
print " ".$row['name']." ".$row['part'].$line_break;
// store this row as last for next time ;)
$last = $row;
}
?>
[snip]
Output is ...
2002-04-01
company1
-title1
name1 part1
name2 part2
name3 part3
name4 part4
-title2
name1 part1
name2 part2
2002-05-01
company2
-title3
name1 part1
name2 part2
name3 part3
name4 part4
Rgds,
Ben
"Sewer rat may taste like pumpkin pie...."