delux247 Posted July 13, 2009 Share Posted July 13, 2009 Hello all, I am trying to create a hierarchical XML document, I have gotten most of it done, but I need some help with a few more things. What the XML needs to look like is this: <types> <group name="Identity + Print"> <type name="Identity System" selected="1" mode="0"> <aspect id="" /> <aspect id="" /> </type> <type name="Stationery System" selected="0" mode="0"> <type name="Production" selected="1" mode="1" > <aspect id="" /> </type> <aspect id="" /> <aspect id="" /> </type> <type name="Print Collateral" selected="0" mode="0"> <type name="Content" selected="0" mode="1"> <aspect id="" /> <aspect id="" /> </type> <type name="Production" selected="1" mode="1"> <aspect id="" /> </type> </type> </group> <group name="Interactive Media"> <type name="Print Collateral" selected="0" mode="0"> <type name="Content" selected="0" mode="1"> <aspect id="" /> <aspect id="" /> </type> <type name="Production" selected="1" mode="1"> <aspect id="" /> </type> </type> </group> <group name="Motion Graphics"> <type name="Print Collateral" selected="0" mode="0"> <type name="Content" selected="0" mode="1"> <aspect id="" /> <aspect id="" /> </type> <type name="Production" selected="1" mode="1"> <aspect id="" /> </type> </type> </group> </types> and here is the PHP: <?php header("Content-Type: application/xml"); echo "<types>"; require_once('php/crud.php'); require_once('php/dBug.php'); ini_set("display_errors","2"); ERROR_REPORTING(E_ALL); $CRUD = new CRUD('types'); $CRUD->addWhere('type_id = 0'); $rows = $CRUD->read(); // get array of items with parent #0 $groups = array(); foreach($rows as $row) { $groups[] = $row; } //new dbug($groups); foreach ($groups as $group) { $SCRUD = new CRUD('types'); $SCRUD->addWhere('type_id = '.$group['id']); $data = $SCRUD->read(); $FCRUD = new CRUD('types'); $FCRUD->addWhere('type_id = '.$data[0]['id']); $fdata = $FCRUD->read(); // get array of items with parent $group[iD] $types = array(); foreach($data as $type) { $types[] = $type; } $types2 = array(); foreach($fdata as $ftype) { $types2[] = $ftype; } $types = array_merge($types, $types2); if (!$types) { // write empty <group /> echo "<group />"; //continue; } // write opening <group> echo "<group name='".$group['name']."'>"; foreach ($types as $type) { $aspects = array(); // get array of items with parent $type[iD] $TCRUD = new CRUD('aspects_types'); $TCRUD->addWhere('type_id = '.$type['id']); $adata = $TCRUD->read(); $aspects = array(); foreach($adata as $aspect) { $aspects[] = $aspect; } //new dbug($aspects); if (!$aspects) { // write empty <type /> //echo "<type />"; // continue; } // write opening <type> $child_group = ($row['name'] == "radio") ? (0) : (1); echo "<type name='".$type['name']."' id='".$type['id']."' selected='".$type['default_selected']."' mode='".$child_group."'>"; foreach ($aspects as $aspect) { echo "<aspect id='".$aspect['aspect_id']."'></aspect>"; } // write closing </type> echo "</type>"; } // write closing </group> echo "</group>"; } // write closing </types> echo "</types>"; ?> I have two tables that I'm working with. The first table is types, it looks like this: id :::::::::::: name ::::::::::::: type_id 1 :::::::::: Identity + print::::: 0 2 :::::::::: Interactive ::::::::: 0 3 :::::::::: Motion ::::::::::::: 0 4 :::::::::: Identity ::::::::::: 1 5 :::::::::: Stationery :::::::: 1 6 :::::::::: Print Coll :::::::::: 1 7 :::::::::: Production :::::::: 5 8 :::::::::: Content ::::::::::: 6 9 :::::::::: Production :::::::: 6 etc... I also have a table called aspects_types that looks like this aspect_id ::::::: type_id 1 :::::::::::::::::4 2 :::::::::::::::::5 2 :::::::::::::::::6 etc... There are 3 records with type_id = 0 these are the groups, in each group there are types, types can have aspects and more types within them. My problem is that I can not get the types that are within higher level types to display. I am at a total loss right now and really need some help. If you need anymore info just ask and I'll get it to you. Thanks in advance! Quote Link to comment Share on other sites More sharing options...
Mchl Posted July 13, 2009 Share Posted July 13, 2009 Why don't you try simplexml Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.