Posted by Steve on 02/08/07 19:38
| Currently I can build a dynamic table using the following but I can't
figure
| out how to only print out the publisher once as a heading for all the
| products that match it, and then when a new publisher is detected print a
| new header and output all matching published products beneath that.
|
| $file = 'results.xml';
|
| // Loading the results into a new DomDocument
| $dom1 = new DOMDocument('1.0', 'ISO-8859-1');
| $dom1->load($file, LIBXML_NOBLANKS);
|
| <?php
| echo("<TR>");
| echo("<TH></TH>");
| echo("<TH>Title</TH>");
| echo("<TH>Author</TH>");
| echo("<TH>Publisher</TH>");
|
| $root = $dom1->documentElement;
|
| $title = $dom1->getElementsByTagName("Title");
| $author = $dom1->getElementsByTagName("Author");
| $publisher = $dom1->getElementsByTagName("Publisher");
// translate the xml into something more standard
// such as a database array of records from a query
$records = array();
for ($i = 0; $i < $title->length; $i++)
{
$records[$i]['TITLE'] = $title->item($i)->nodeValue;
$records[$i]['AUTHOR'] = $author->item($i)->nodeValue;
$records[$i]['PUBLISHER'] = $publisher->item($i)->nodeValue;
}
// now, this is how you can group by *any* of these fields
// but as you requested, this is by publisher
$group = array();
foreach ($records as $record)
{
$group[$record['PUBLISHER'][] = $record;
}
// now output the results
foreach ($group as $publisher => $records)
{
// echo out your header here for each publisher
foreach ($records as $record)
{
// echo out this publisher's author's works
}
}
hth
[Back to original message]
|