vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Help with saving sql query results (https://vborg.vbsupport.ru/showthread.php?t=296764)

vBNinja 04-01-2013 02:24 PM

Help with saving sql query results
 
Fixed post.....

kh99 04-01-2013 07:07 PM

You could do something like this:

Code:

$result = $vbulletin->db->query("SELECT userfield.fieldX, userfield.userid FROM userfield INNER JOIN user ON user.userid =userfield.userid WHERE usergroupid IN (list_of_usergroups)");

$rendered_table = '<table>';
while ($row = $vbulletin->db->fetch_array($result))
{
  $rendered_table .= '<tr><td>' . $row['userid'] . '</td><td>' . $row['fieldX'] . '</td></tr>';
}
$rendered_table .= '</table>';

vB_Template::preRegister('template_name', array('rendered_table' => $rendered_table));


then use {vb raw rendered_table} in the template. (This assumes you want to put it in an existing template. If you're creating your own template then you'd probably use register() instead of preRegister()).

Quote:

Originally Posted by vBNinja (Post 2413623)
Also once i get that working, i would normally use a foreach loop and build the table with "echo" but since i'm trying to integrate this to a vbulletin page, should i just concatenate the html in the php file and render it as a variable to use in a vb template then simply use it like: "{vb raw rendered_table}" or is there a more efficient way of doing this?


That's what the above example does, and there's no problem doing it that way. But I should mention that the convention in the vbulletin code is to put any html in a template and render the template. You could have a template for one table row, or you can save all the rows to an array and then use <vb:each> in the template to loop through them.

vBNinja 04-02-2013 03:04 AM

Quote:

Originally Posted by kh99 (Post 2413709)
You could do something like this:

Code:

$result = $vbulletin->db->query("SELECT userfield.fieldX, userfield.userid FROM userfield INNER JOIN user ON user.userid =userfield.userid WHERE usergroupid IN (list_of_usergroups)");

$rendered_table = '<table>';
while ($row = $vbulletin->db->fetch_array($result))
{
  $rendered_table .= '<tr><td>' . $row['userid'] . '</td><td>' . $row['fieldX'] . '</td></tr>';
}
$rendered_table .= '</table>';

vB_Template::preRegister('template_name', array('rendered_table' => $rendered_table));


then use {vb raw rendered_table} in the template. (This assumes you want to put it in an existing template. If you're creating your own template then you'd probably use register() instead of preRegister()).




That's what the above example does, and there's no problem doing it that way. But I should mention that the convention in the vbulletin code is to put any html in a template and render the template. You could have a template for one table row, or you can save all the rows to an array and then use <vb:each> in the template to loop through them.

Awesome thanks! the code worked perfectly

My mod reads an external XML API file that retrieves values to use for the table i mentioned. But it's pretty intensive, generating the table for 5 test users currently takes ~30 seconds. So what i was thinking was to use a cron job that runs every 10 or 15 minutes with a script that opens the API, saves the values in the database (i've already managed to do this :D) so that when the actual script (mymod.php) is requested, it just has to read and output the values that were already saved in the database instead of having to run the API. What i need help with is caching the to make it run faster.

Thanks again!


All times are GMT. The time now is 03:56 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.00931 seconds
  • Memory Usage 1,725KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (3)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete