You could use a recursive function and keep it all in one table.
My Table is similar to the one below:
ID NAME PID DISPLAY_ORDER
Here's crude recursive function to display this in a list typical of what
you used to style a menu. The great thing about this is that you could have
unlimited submenus if you wanted ...
function displayMenu( $pid )
{
global $db;
$res =& $db->query( "SELECT * FROM tblmenu WHERE pid = '".$pid."'
ORDER BY display_order" );
mysqlErrorCheck( $res );
while( $res->fetchInto( $objData ) )
{
$html .= "<li>".$objData['name'];
$html .= "<ul>".displayMenu( $objData['id'] )."</ul>";
$html .= "</li>";
}
return $html;
}
echo "<ul>".displayMenu('0')."</ul>";
-----Original Message-----
From: Ryan A [mailto:[EMAIL PROTECTED]
Sent: Wednesday, June 21, 2006 10:51 AM
To: Philip Thompson; [email protected]
Subject: Re: [PHP] Better way of doing this? (menu and submenus)
> Ryan,
>
> I have run into a similar problem with one of the
> sites I'm designing.
> Here's the approach I took. You can see if it fits
> your needs.
>
> Here's an example of
> what I have:
>
> MID NAME PARENT_ID LOCATION
> 1 Home <null> index.php
> 2 Products <null> products.php
> 3 Information <null> info.php
> 10 Profile 1 profile.php
> 11 Account 1 account.php
> 20 Hardware 2 hardware.php
> 21 Software 2 software.php
> 210 M$ Word 21 msword.php
> 211 iLife 21 ilife.php
>
> And I think you get the drift.
> You can keep getting deeper in the
> tree structure and not have to worry about adding
> more tables.
>
> Notice that the menu_item_id (MID) actually has some
> organization to
> it, but this is completely optional. As the menu
> items grow, this will
> probably be more difficult to keep track of. Anyway,
> hope that helps!
@Phillip,
Thanks for replying.
Because (like you pointed out) the MID can get a
little crazy I was thinking of using two tables, one
for parent and the other for the children.
Also, I forgot to mention in my first post, I am using
a p_position (parent position) and c_position (child)
for each of the menu items, that way I can do a ORDER
BY in my query and it should still look good and
changing positions shouldnt be a problem (ask anyone
who's married, being flexable in changing positions is
VERY important :-D )
Doing an ORDER BY on two tables in also a bit more
simple than one (IMHO, feel free to correct me)
I really appreciate your input on this as I am in the
theory stage while you have actually made something
like this, thanks again.
@K. Bear - Thanks for the link, I'll check it out as
soon as i get a little time.
Cheers!
Ryan
------
- The faulty interface lies between the chair and the keyboard.
- Creativity is great, but plagiarism is faster!
- Smile, everyone loves a moron. :-)
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php