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

Reply
 
Thread Tools Display Modes
  #1  
Old 03-02-2006, 07:49 AM
Logikos Logikos is offline
 
Join Date: Jan 2003
Posts: 2,924
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default category tree bit Help

I would like to create a simple category tree using the vbulletin templates. Seems though I can't add a bit template to a bit template which would both be part of the main template. I'll try to explaine better...

Database Setup for table Categories with the following fields:
id, title, description, and display order. I have 3 Categories inserted that I'm testing with.

Category 1
Category 2
Category 3

I have another table setup called items with the following fields:
id, catid, title, description, and display order. I have 6 items inserted that I'm testing with.

Item 1 (catid1)
Item 2 (catid1)
Item 3 (catid1)
Item 4 (catid2)
Item 5 (catid2)
Item 6 (catid3)

Now with this code it would work right obvisoulsy because I'm just echoing:
PHP Code:
$var1data $db->query_read("
        SELECT *
        FROM " 
TABLE_PREFIX "category
"
);

while (
$var1 $db->fetch_array($var1data))
{
        echo 
"<b>" $var1['title'] . "</b><br />";

        
$var2data $db->query_read("
                SELECT *
                FROM " 
TABLE_PREFIX "items
                WHERE catid = 
$var1[id]
        "
);

        while (
$var2 $db->fetch_array($var2data))
        {
                echo 
"----<i>" $var2['title'] . "</i><br />";
        }

What will display the following:

Category 1
------ Item 1
------ Item 2
------ Item 3
Category 2
------ Item 4
------ Item 5
Category 3
------ Item 6

Though adding this to the templates like that would mean using 3 templates. A main template that will hold the main code and the category bit variable, the category bit template, which would hold the item bit variable, and the item bit template that would hold the item info. Like so...

PHP Code:
$var1data $db->query_read("
        SELECT *
        FROM " 
TABLE_PREFIX "category
"
);

while (
$var1 $db->fetch_array($var1data))
{
        eval(
'$Categories .= "' fetch_template('categories') . '";');

        
$var2data $db->query_read("
                SELECT *
                FROM " 
TABLE_PREFIX "items
                WHERE catid = 
$var1[id]
        "
);

        while (
$var2 $db->fetch_array($var2data))
        {
                eval(
'$Items .= "' fetch_template('items') . '";');
        }
}

eval(
'print_output("' fetch_template('maintemplate') . '");'); 
But that won't work because I'm adding a bit variable inside another templatebit. Anyone know what can be done to do something like this. The screenshot it what I'm trying to get out of this. Thanks!!


I think using the cache system would be a better approach
Attached Images
File Type: gif catSS.gif (2.7 KB, 0 views)
Reply With Quote
  #2  
Old 03-02-2006, 08:16 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

move
PHP Code:
        eval('$Categories .= "' fetch_template('categories') . '";'); 
to the last line of the while-loop. You will need to evaluate the item-bits before you do the category.
Reply With Quote
  #3  
Old 03-02-2006, 08:26 AM
Logikos Logikos is offline
 
Join Date: Jan 2003
Posts: 2,924
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I should have said that I did try that before and It keep showing up like:
Category 1
------ Item 1
------ Item 2
Category 2
------ Item 1
------ Item 2
------ Item 4
------ Item 5
Category 3
------ Item 4
------ Item 5
------ Item 6

I'm thinking it might be eaiser to add the items to the datastore and using a foreach() to get them.

Well using foreach()'s didn't help much. This is getting on my nerves and I can't figure out why the hell the items are showing in other categorys even when I add a where clause and a if statment. (WHERE catid = $var1[id]) and (if ($var2['catid'] == $var1['id'])). AHHHHH

/me screams!!!!!
Reply With Quote
  #4  
Old 03-03-2006, 06:54 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try:
PHP Code:
while ($var1 $db->fetch_array($var1data))  
{  
        
$Items null;
        
$var2data $db->query_read("  
                SELECT *  
                FROM " 
TABLE_PREFIX "items  
                WHERE catid = 
$var1[id]  
        "
);  

        while (
$var2 $db->fetch_array($var2data))  
        {  
                eval(
'$Items .= "' fetch_template('items') . '";');  
        }  
        eval(
'$Categories .= "' fetch_template('categories') . '";');  

Reply With Quote
  #5  
Old 03-03-2006, 07:17 PM
Logikos Logikos is offline
 
Join Date: Jan 2003
Posts: 2,924
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks MarcoH. Trigunflame helped me the other night and that was exacly what i had to do. I added $Items=""; under the eval for $Categories.
Reply With Quote
  #6  
Old 03-05-2006, 09:23 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yup that will do the same (although as a purist i would say always initialize so before the calculation, not after).
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 04:23 PM.


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.15351 seconds
  • Memory Usage 2,254KB
  • Queries Executed 14 (?)
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
  • (4)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (6)post_thanks_box
  • (6)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (6)post_thanks_postbit_info
  • (6)postbit
  • (1)postbit_attachment
  • (6)postbit_onlinestatus
  • (6)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_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete