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

Reply
 
Thread Tools Display Modes
  #1  
Old 04-09-2012, 03:25 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default nested dependent vb:each - building headers for sorting

Hello,

I have tried numerous ways, but am beginning to think this not possible (or i'm just stuck looking at it from a single angle), so figured i'd try to get some outside opinions/help.

In my php file, i create an array that looks like the following:
Code:
    while ($wp_alist = $vbulletin->db->fetch_array($wp_fulllist))
    {
        $wp_list[$count] = array(
            'id' => htmlspecialchars($wp_alist['id']),
            'name' => htmlspecialchars($wp_alist['name']),
            'locid' => htmlspecialchars($wp_alist['locid']),
            'location' => htmlspecialchars($wp_alist['location']),
            'url' => htmlspecialchars($wp_alist['url'])
        );
        $count++;
    }

    $templater->register('wp_list', $wp_list);
In my template, i can successfully display the entire list using
Code:
<vb:each from="wp_list" value="list">
<tr>
	<td>{vb:raw list.location}</td>
	<td><a href="{vb:raw list.url}">{vb:raw list.name}</a></td>
</tr>
</vb:each>
However, what i would like to do is separate the items based on the location, something similar to the image that i attached. A rough code might be something like this, but i know that vb:raw cannot be used in a conditional, and i cannot figure out how to work around this.
Code:
<vb:each from="wp_list" value="location">
<h1>{vb:raw location.location}</h1>
	<vb:each from="wp_list" value="list">
	<vb:if condition="{vb:raw loc.location} = {vb:raw scroll.location}">
	<tr>
		<td>{vb:raw list.location}</td>
		<td><a href="{vb:raw list.url}">{vb:raw list.name}</a></td>
	</tr>
	</vb:if>
	</vb:each>
</vb:each>
Attached Images
File Type: png nested.png (12.2 KB, 0 views)
Reply With Quote
  #2  
Old 04-09-2012, 04:24 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think that appraoch will work but you might need to create your own array of locaitons and register it too. Maybe try something like this:

Code:
    while ($wp_alist = $vbulletin->db->fetch_array($wp_fulllist))
    {
        $locations[] = htmlspecialchars($wp_alist['location']);
        $wp_list[] = array(
            'id' => htmlspecialchars($wp_alist['id']),
            'name' => htmlspecialchars($wp_alist['name']),
            'locid' => htmlspecialchars($wp_alist['locid']),
            'location' => htmlspecialchars($wp_alist['location']),
            'url' => htmlspecialchars($wp_alist['url'])
        );
    }
    $locations = array_unique($locations);
    $templater->register('wp_list', $wp_list);    
    $templater->register('wp_locations', $locations);

and then in your template:

Code:
<vb:each from="wp_locations" value="location">
<h1>{vb:raw location}</h1>
	<vb:each from="wp_list" value="list">
	<vb:if condition="$list['location'] == $location">
	<tr>
		<td>{vb:raw list.location}</td>
		<td><a href="{vb:raw list.url}">{vb:raw list.name}</a></td>
	</tr>
	</vb:if>
	</vb:each>
</vb:each>

I'm not sure of there's any way to use the value from the outer vb:each to specify the inner vb:each array. That would make things a little more efficient.
Reply With Quote
Благодарность от:
wpeloquin
  #3  
Old 04-10-2012, 07:32 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That didn't work (for me, anyways). I think it still sees the objects in the IF statement as <vb:raw> statements...
Reply With Quote
  #4  
Old 04-11-2012, 02:46 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I did have one error in the code above, which I just fixed. It said location.location when it should just be location. Also I left out the htmlspecialchars when setting the locations array. But I did test it and it basically seemed to work. What happens when you try?
Reply With Quote
  #5  
Old 04-13-2012, 08:07 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I had to play with the <table> tag and it is working now (see below). Much thanks kh99! I was on the right track it seems, just off on the syntax. You saved me many hours of tedious hair pulling

Code:
<vb:each from="wp_locations" value="location">
<h1>{vb:raw location}</h1>
<table>
	<vb:each from="wp_list" value="list">
	<vb:if condition="$list['location'] == $location">
	<tr>
		<td>{vb:raw list.location}</td>
		<td><a href="{vb:raw list.url}">{vb:raw list.name}</a></td>
	</tr>
	</vb:if>
	</vb:each>
</table>
</vb:each>
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 10:25 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03550 seconds
  • Memory Usage 2,226KB
  • Queries Executed 12 (?)
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
  • (6)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (1)post_thanks_box_bit
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (1)postbit_attachment
  • (5)postbit_onlinestatus
  • (5)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_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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • 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
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete