Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 05-21-2006, 12:36 AM
roosevelt roosevelt is offline
 
Join Date: Aug 2004
Location: MD, USA
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Unlimited Category Tree - Need Help

For a while I've been trying to make this system and so far it goes up to one level. I am pretty sure there's a way to display unlimited category levels but that's what I just don't know. Anyways I will not post the actual source code but the concept should be enough for a more advanced PHP programmer.

Table
- CatId
- CatName
- CatParent

Example
CatId CatName CatParent (or subof)
1 Man 0
2 Woman 0
3 Boy 1
4 Girl 2
5 Baby Girl 4
6 Baby Boy 3

PHP Code:
$sql mysql_query("SELECT * FROM categorytable WHERE CatParent = '0'");
while (
$data mysql_fetch_array($sql))
{
 echo 
"{$data['CatName']}<br />";
 
$sql2 mysql_query("SELECT * FROM categorytable WHERE CatParent = '".$data['CatId']."'");
 echo 
"- {$data2['CatName']}<br />";

My little while loop produces this:
Man
- Boy
Woman
- Girl

So if I wish to display Baby Girl category under Girl I will need another loop just under $sql2. Now the problem is I don't really know how deep the user will create his categories. So what is the trick to make unlimited categories?

Thanks a bunch in advance!!
Reply With Quote
  #2  
Old 05-21-2006, 04:08 PM
hambil's Avatar
hambil hambil is offline
 
Join Date: Jun 2004
Location: Seattle
Posts: 1,719
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to add a CatRoot, then you can get it all in one query.

Table
- CatId
- CatName
- CatParent
- CatRoot

Example
CatId CatName CatParent (or subof)
1 Man 0 1
2 Woman 0 2
3 Boy 1 1
4 Girl 2 2
5 Baby Girl 4 2
6 Baby Boy 3 1

PHP Code:
$sql mysql_query("SELECT * FROM " TABLE_PREFIX "categorytable ORDER BY CatRoot, CatParent");
while (
$data mysql_fetch_array($sql))
{
 echo 
$data['CatName'] . "<br />";

Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:22 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05740 seconds
  • Memory Usage 2,174KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete