Re: array recursion from database rows

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bob wrote:
Hi.

I have a database table I have created for navigation.

The table fields are uid, parent_id, menu_name.

Each entry is either a top level element with a parent_id of 0 or a child
which has a parent_id that relates to the parent uid.

What I am trying to do is recurse through a set of rows adding the
child(ren) of a parent to a multi-dimensional array.

Does anyone know how I can do this, I've tried (unsuccessfully) to traverse
the rows to create this array but I keep failing miserably.

This is probably very easy for the people on this list so I am hoping
someone could help me out.



I recently wrote a function to do just that. My data structure is a little different than yours. My table is called menuitems and is designed to store menu items for many different menus. But I do use the same ParentID concept you described to link sub menus in. I just call my function recessively. Here is a slightly simplified version of my function. I replaced the standard html tags with [ and ] to avoid stupid email clients trying to encode it as an html message.


function PrintMenu($MenuID, $ParentItemID)
{
  $query  = "SELECT * \n";
  $query .= "FROM `menuitem`  \n";
$query .= "WHERE `MenuID` = '$MenuID' AND `ParentItemID` = '$ParentItemID' \n";
  $query .= "ORDER BY `OrderBy` \n";
  //print "[pre>$query[/pre>\n";
  $result = mysql_query($query);
QueryErrorLog($result, $query, __FILE__, __LINE__, __FUNCTION__, mysql_error(), mysql_errno(), 1);
  if(mysql_num_rows($result) > 0){
    print "[ul]\n";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
      foreach($row as $TmpVar => $TmpValue){
        $$TmpVar = $TmpValue;
      }
      print "[li][a href='$URL']$Title[/a][/li]\n";
      PrintMenu($MenuID, $MenuItemID);
    }
    print "[/ul]\n";
  }

}



--
Chris W
KE5GIX

"Protect your digital freedom and privacy, eliminate DRM,
learn more at http://www.defectivebydesign.org/what_is_drm";

Ham Radio Repeater Database.
http://hrrdb.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux