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 08-04-2011, 03:49 PM
EquinoxWorld EquinoxWorld is offline
 
Join Date: Nov 2009
Location: Naples
Posts: 354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Problem with SQL query inside a php function

Hello everyone, I am trying to wrap a SQL query with a function to later pass as a variables into one of my templates. Whenever I run this simple query (for example to get the number of the contest) not wrapped as a function, it returns the value fine (which is 1). The following works perfect:

PHP Code:
<?php
define
('CSRF_PROTECTION'true); 
require_once(
'./global.php');
    
$result $vbulletin->db->query("SELECT id FROM cotw_sotw_time_end ORDER BY id DESC LIMIT 1"); 
    
$row mysql_fetch_row($result); 
    echo 
$row[0];
?>
When I try to wrap a function around it and try and call it to verify the function is printing out what is expected I get a 500 Internal Server Error using the following code:

PHP Code:
<?php
define
('CSRF_PROTECTION'true); 

function 
sotw_number() {
require_once(
'./global.php');
    
$result $vbulletin->db->query("SELECT id FROM cotw_sotw_time_end ORDER BY id DESC LIMIT 1"); 
    
$row mysql_fetch_row($result); 
    echo 
$row[0];
}

sotw_number();
?>
Even using the following code I get the 500 internal server error.

PHP Code:
<?php
define
('CSRF_PROTECTION'true); 

function 
sotw_number($dummy) {
require_once(
'./global.php');
    
$result $vbulletin->db->query("SELECT id FROM cotw_sotw_time_end ORDER BY id DESC LIMIT 1"); 
    
$row mysql_fetch_row($result); 
    echo 
$row[0];
}

sotw_number(true);
?>
My question is how can I get the function to "display" the results correctly having a SQL query inside? Any ideas anyone? If anyone has any input or feedback please don't hesitate to share.

Thanks for your time everyone.
Reply With Quote
  #2  
Old 08-04-2011, 04:05 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think maybe global.php doesn't work right when included inside a function. You could do this:

PHP Code:
<?php 
define
('CSRF_PROTECTION'true);  
require_once(
'./global.php'); 

function 
sotw_number($dummy) { 
    global 
$vbulletin;

    
$result $vbulletin->db->query("SELECT id FROM cotw_sotw_time_end ORDER BY id DESC LIMIT 1");  
    
$row mysql_fetch_row($result);  
    echo 
$row[0]; 


sotw_number(true); 
?>
(BTW, I had a feeling the code I posted last night was undoing something you were trying to do )
Reply With Quote
  #3  
Old 08-04-2011, 04:07 PM
EquinoxWorld EquinoxWorld is offline
 
Join Date: Nov 2009
Location: Naples
Posts: 354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
I think maybe global.php doesn't work right when included inside a function. You could do this:

PHP Code:
<?php 
define
('CSRF_PROTECTION'true);  
require_once(
'./global.php'); 

function 
sotw_number($dummy) { 
    global 
$vbulletin;

    
$result $vbulletin->db->query("SELECT id FROM cotw_sotw_time_end ORDER BY id DESC LIMIT 1");  
    
$row mysql_fetch_row($result);  
    echo 
$row[0]; 


sotw_number(true); 
?>
(BTW, I had a feeling the code I posted last night was undoing something you were trying to do )
xD That worked PERFECT! Using a function instead of a do REQUEST does seem more reasonable hu? Thanks for your help

--------------- Added [DATE]1312478868[/DATE] at [TIME]1312478868[/TIME] ---------------

OK well almost works . It works but it displays the value at the top left corner of every page of that script...

Any ideas why this would be happening?

This the plugin I am using:

PHP Code:
require_once('./intuitco/cotw/functions/cotw_func_contest_num.php');   
$cotw_sotw_contests_number sotw_number(true);   
vB_Template::preRegister('COTW_SOTW','cotw_sotw_contests_number' => $cotw_sotw_contests_number); 
Reply With Quote
  #4  
Old 08-04-2011, 04:45 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Because you use echo. You can't use echo to output things in vB properly. You need to register the variable for template use.
Reply With Quote
  #5  
Old 08-04-2011, 04:58 PM
EquinoxWorld EquinoxWorld is offline
 
Join Date: Nov 2009
Location: Naples
Posts: 354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cellarius View Post
Because you use echo. You can't use echo to output things in vB properly. You need to register the variable for template use.
OK. Would you mind explaining please a bit further? I know I can use return instead of echo but how do you register a function as a variable for use in a template? It took me a while to get the functions to work properly but now I can't use them in the template. I am using this plugin:
PHP Code:
ob_start(); 
  require_once(
'./intuitco/cotw/functions/cotw_func_contest_num.php');  
  
$cotw_sotw_contests_number sotw(true); 
ob_end_clean(); 
vB_Template::preRegister('OFTW_SOTW',array('cotw_sotw_contests_number' => $cotw_sotw_contests_numbe 
And this is the php file itself: If I just call the function in this file and call it in my browser I do get the correct value btw.

PHP Code:
<?php 
define
('CSRF_PROTECTION'true);   
$curdir getcwd ();
chdir('/var/xxxxx/xxx/aniworlds.net/subdomains/laboratories/httpdocs');
require_once(
'./global.php');
chdir ($curdir);
//===================================Contests Number==================================// 

//================================First Contest:Signature Of The Week=======================================// 
//==============================NOTHING IS CHANGED BEYOND THIS LINE!!!!!====================================// 
//==========================================================================================================// 
function sotw($dummy)
{
    global 
$vbulletin;   
    
$result $vbulletin->db->query("SELECT id FROM cotw_sotw_time_end ORDER BY id DESC LIMIT 1"); 
    
$row mysql_fetch_row($result); 
    echo 
$row[0];


//=========================================================================================================// 
//===================================Second Contest:Avatar Of The Week=====================================// 
//==============================NOTHING IS CHANGED BEYOND THIS LINE!!!!!====================================// 
//==========================================================================================================// 
function aotw($dummy)

    global 
$vbulletin;  
    
$result $vbulletin->db->query("SELECT id FROM cotw_aotw_time_end ORDER BY id DESC LIMIT 1"); 
    
$row mysql_fetch_row($result); 
    return 
$row[0]; 

//==========================================================================================================// 
//=================================END OF PRINTING CURRENT CONTEST NUMBER===================================// 
//==========================================================================================================// 
?>
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 07:45 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.05611 seconds
  • Memory Usage 2,240KB
  • Queries Executed 11 (?)
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
  • (8)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (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
  • 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