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 02-10-2011, 09:42 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default multidimensional array from database table

I am having trouble getting multiple rows from a table to display.

This is where i am currently at...
In my plugin php code i have the following:
Code:
// This will be in the form of page.php?do=action&user=1
$rkc_getuserid = $vbulletin->input->clean_gpc('r', 'user', TYPE_UINT);

$rkc_allchar = $vbulletin->db->query_first("
	SELECT char_id, char_name, char_race, char_class
	FROM " . TABLE_PREFIX . "rkc_plugintable AS rkc_plugintable
	WHERE user_id = '" . $vbulletin->db->escape_string($rkc_getuserid) . "'
");

$rkc_char['char_id'] = htmlspecialchars($rkc_char['char_id']);
$rkc_char['char_name'] = htmlspecialchars($rkc_char['char_name']);
$rkc_char['char_race'] = htmlspecialchars($rkc_char['char_race']);
$rkc_char['char_class'] = htmlspecialchars($rkc_char['char_class']);

...

    $templater->register('rkc_allchar', $rkc_allchar);
    $templater->register('rkc_char', $rkc_char);
then in my template, i have the following:
Code:
<tr>
	<vb:each from="rkc_allchar" value="char">
		<td>{vb:raw char}</td>
	</vb:each>
</tr>
The above code will successfully pull 1 row of data from the table. but if the user has multiple rows to pull, the other rows will not display. if i change from="rkc_allchar" to from="rkc_char" i get no data displayed at all.

I am pretty sure this has something to do with making a multidimensional array, but i am not sure how exactly to do this. I have trolled multiple php and vb sites but none of them give me enough to know how to do this when pulling multiple rows with multiple fields from a database.

What I am looking to do is something like:
Code:
<vb:each from="?" value="?">  // This will create a new row for each row of data collected
<tr>
	<vb:each from="rkc_allchar" value="char">  // This will break down each field from the row into its own <td>
		<td>{vb:raw char}</td>
	</vb:each>
</tr>
</vb:each>
I assume the array will have to look something like:
Code:
char_array( 
               char1( 
                      char_id => $variable, 
                      char_name => $variable,
                      char_race => $variable
                      char_class => $variable
                    ),
               char2( 
                      char_id => $variable, 
                      char_name => $variable,
                      char_race => $variable
                      char_class => $variable
                    ),
               char3( 
                      char_id => $variable, 
                      char_name => $variable,
                      char_race => $variable
                      char_class => $variable
                    )
             );
Reply With Quote
  #2  
Old 02-10-2011, 10:06 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You are using query_first which will only get you one row of data. You need to do a query_read in order to get all the rows.
Reply With Quote
  #3  
Old 02-13-2011, 09:34 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ah, ty for that. i changed that, but it is still not working properly.

Like i said, I am unsure how to structure the php code and the template code properly. i have tried multiple ways, and will keep trying to find an example/tutorial/etc on what im trying to do, but any help on the structure or what i'm doing wrong is appreciated.

----------------------------
EDIT: User Solved
----------------------------
PHP Code:
Code:
$rkc_allchar = $vbulletin->db->query_first("
	SELECT char_id, char_name, char_race, char_class
	FROM " . TABLE_PREFIX . "rkc_plugintable AS rkc_plugintable
	WHERE user_id = '" . $vbulletin->db->escape_string($rkc_getuserid) . "'
");

$count = 0;
while ($rkc_char = $vbulletin->db->fetch_array($rkc_allchar))
{
    $rkc_charlist[$count] = array(
        'char_id' => htmlspecialchars($rkc_char['char_id']),
        'char_name' => htmlspecialchars($rkc_char['char_name']),
        'char_race' => htmlspecialchars($rkc_char['char_race']),
        'char_class' => htmlspecialchars($rkc_char['char_class']),
    );
    $count++;
...

    $templater->register('rkc_charlist', $rkc_charlist);

    }
Template Code:
Code:
	<vb:each from="rkc_charlist" value="char">
	<tr>
		<td class="blocksubhead" style="width:15%;">{vb:raw char['char_id']}</td>
		<td class="blocksubhead" style="width:15%;">{vb:raw char['char_name']}</td>
		<td class="blocksubhead" style="width:15%;">{vb:raw char['char_race']}</td>
		<td class="blocksubhead" style="width:15%;">{vb:raw char['char_class']}</td>
	</tr>
	</vb:each>
Thank you for the help!
Reply With Quote
  #4  
Old 02-13-2011, 11:40 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have you tried doing a search in the default vbulletin files for some code that is an example of what you want?
Reply With Quote
  #5  
Old 02-13-2011, 11:50 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i posted my solution as an edit to my last post. Thanks for the help!
Reply With Quote
  #6  
Old 02-14-2011, 12:45 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for posting the solution and I'm glad you got it figured out.
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 11:13 PM.


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.06326 seconds
  • Memory Usage 2,217KB
  • 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
  • (6)bbcode_code
  • (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
  • (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_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete