Here it is.. i found the problem.. 1) all the menu objects->arrChildren have an array , if there are on submenus.. then the array is empty .. the function was trying to recurse through empty arrays. 2) the recursive call needed to pass the arrChildren to recurse correctly "display_menu($value->arrChildren);" now just to get the html output and css to live together :-)... Thanks All form the support, all bets greg.. <?php $link = mysql_connect("127.0.0.1", "root", ""); if (!$link) { die('Could not connect: ' . mysql_error()); } // make the current db $db_selected = mysql_select_db('NEW_CMS', $link); if (!$db_selected) { die (" can't connect to database : " . mysql_error()); } class MenuItem { var $intID = 0; var $names = ''; var $arrChildren = array( ); // // Constructor function MenuItem ( $intID, $text ) { $this->intID = $intID; $this->names = $text; $this->addChildren( ); } function addChildren ( ) { $strSQL = "select id, name from newCMS_section where Parent = ". $this->intID .""; $rseResult = mysql_query($strSQL); while ( $arrRecord = mysql_fetch_array( $rseResult, MYSQL_BOTH ) ) { $this->arrChildren[] = new MenuItem( trim( $arrRecord[0] ), trim($arrRecord[1]) ); } } } $Menu =& new MenuItem(0,''); $txt = $Menu->arrChildren; function display_menu($array) { $link =''; $namez =''; foreach ($array as $key => $value) { if(empty($value->arrChildren)){ //arrChildren =>Array // problem was with the above if statment. $namez = $value->names; $link = $value->names; echo "<li><a href='{$link}'>{$namez}</a></li>\n"; } else { $namez = $value->names; echo "<ul><li><a>{$namez}</a><ul>"; display_menu($value->arrChildren); echo '</ul></li></ul>'; } // end of else } // end of foreach loop } // end of function //echo "<ul>"; echo "<ul id='nav' >"; display_menu($txt); ?> -- Many Thanks Gregory Machin (flamer) 072 524 8096 www.linuxpro.co.za greg@xxxxxxxxxxxxxx Agent for iberry.info hosting solutions -- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php