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

Reply
 
Thread Tools Display Modes
  #1  
Old 06-07-2006, 10:56 PM
sambah sambah is offline
 
Join Date: May 2006
Posts: 67
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Coding problem

A little history first:

I am a completely new php/sql coder (been doing it 4 days) and have chosen a fantasy football/sports game hack for vb to start with.

Its coming along fairly well: Users can register, and view the mainpage, admin can add players, and users can view those players and buy them if they have enough money.

Once a user has bought a player the userid (same as the vb userid) and playerid goes into a new table.

I am trying to make a new page with their current "team" (ie. the players they have bought.

Problem is...it isnt working. I suspect the problem isn't in my query, but it could be.

Heres the code for the team page:

Code:
$teaminfo = ($db->query("SELECT *
FROM footy_players
INNER JOIN footy_teams
ON footy_teams.playerid=footy_players.pid
WHERE footy_teams.userid =  " . $vbulletin->userinfo['userid'] . "")
); 

while ($row = mysql_fetch_array($teaminfo)) {

$tpname = $row['pname'];
$tpvalue = $row['pvalue'];
$tpnationality = $row['pnationality'];

  $tpage .= "
<font class=\"normal\">
<hr>
<b>$tpname </b><br>
$tpvalue<br>
$tpnationality
<br>
<br>
</font>
";
}
And

Code:
if ($_GET['do'] == 'myteam')
{
eval('print_output("' . fetch_template('footy_team') . '");');
}
?>
However when I run ?do=myteam it just loads the original template and not footy_team.

Any ideas?
Reply With Quote
  #2  
Old 06-07-2006, 11:11 PM
noppid noppid is offline
 
Join Date: Mar 2003
Location: Florida
Posts: 1,875
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Could you do a show table query and let us see the two table structures before we comment on the query?
Reply With Quote
  #3  
Old 06-07-2006, 11:25 PM
sambah sambah is offline
 
Join Date: May 2006
Posts: 67
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

sorry. i couldnt work out how to make show table show the details about one table as opposed to a list of all the tables. so i screenshotted instead



Its installed on a stock vb 3.5.4 with no other modifications.

No standard tables have been modified and 3 tables added:

footy_registration
footy_players
footy_teams
Reply With Quote
  #4  
Old 06-08-2006, 01:30 AM
noppid noppid is offline
 
Join Date: Mar 2003
Location: Florida
Posts: 1,875
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What I'm looking for are indexes.

Damn, I can see how this could be frustrating. I want to just try my ideas.
Reply With Quote
  #5  
Old 06-10-2006, 05:39 AM
Eikinskjaldi's Avatar
Eikinskjaldi Eikinskjaldi is offline
 
Join Date: Feb 2006
Location: Hell, never looked better
Posts: 572
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

From the looks of it, one of the issues at the least seems the placement of your if, maybe attach the file you are working on so we can get a better look at the script on a whole rather then this small chunk.
Reply With Quote
  #6  
Old 06-11-2006, 12:04 AM
sambah sambah is offline
 
Join Date: May 2006
Posts: 67
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sure. Thanks for answering

Here we go:

PHP Code:
<?php

error_reporting
(E_ALL & ~E_NOTICE);

// #################### CONSTANTS #######################
 
define('NO_REGISTER_GLOBALS'1);
 
define('THIS_SCRIPT''football'); 

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
 
$phrasegroups = array('timezone''user''register');

// get special data templates from the datastore
 
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array(
    
'footy_main',
    
'footy_team',
    
'footy_users',
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');


// GET THE VB HEADER/FOOTER/NAVBAR
eval('$headinclude = "' fetch_template('headinclude') . '";');   
eval(
'$header = "' fetch_template('header') . '";');   
eval(
'$navbar = "' fetch_template('navbar') . '";');  

if (
$_POST['buttonpressed']==&& $_POST['cashvalue']>0)
    
$db->query("UPDATE footy_registration SET cash=cash-".$_POST['cashvalue']." WHERE userid = " $vbulletin->userinfo['userid'] . "");
$db->query("
        INSERT INTO `footy_teams` ( `userid` , `playerid` ) 
        VALUES (" 
$vbulletin->userinfo[userid] . ", '".$_POST['pid']."')
    "
);

// QUERY DATABASE SO WE CAN PRINT DATA ON THE PAGE
$reginfo = ($db->query_first("SELECT * FROM footy_registration WHERE userid = " $vbulletin->userinfo['userid'] . "")); 
$playerinfo = ($db->query("SELECT * FROM footy_players ORDER BY pid desc LIMIT 50"));
$cash $reginfo['cash'];

while (
$row mysql_fetch_array($playerinfo)) {

$pname $row['pname'];
$pvalue $row['pvalue'];
$pnationality $row['pnationality'];
$pid $row['pid'];

$paybutton="";
if (
$pvalue <= $cash)
$paybutton='<form name="myform" method="post" action="football.php">
<input type="hidden" name="cashvalue" value="'
.$pvalue.'">
<input type="hidden" name="pid" value="'
.$pid.'">
<input type="hidden" name="buttonpressed" value="1">
<input type="submit" value="Buy Player" title="Buy player">
</form>'
;
  
  
$page .= "
<font class=\"normal\">
<hr>
<b>
$pname </b><br><br>
$pvalue
$pnationality
--->"
.$paybutton."<---
<br>
<br>
</font>
"
;
}

$teaminfo = ($db->query("SELECT *
FROM footy_players
INNER JOIN footy_teams
ON footy_teams.playerid=footy_players.pid
WHERE footy_teams.userid =  " 
$vbulletin->userinfo['userid'] . "")
); 

while (
$row mysql_fetch_array($teaminfo)) {

$tpname $row['pname'];
$tpvalue $row['pvalue'];
$tpnationality $row['pnationality'];

  
$tpage .= "
<font class=\"normal\">
<hr>
<b>
$tpname </b><br>
$tpvalue<br>
$tpnationality
<br>
<br>
</font>
"
;
}



var_dump($playerinfo);


// ############################# START MAIN PAGE ###############################

// Check whether the user has registered for the game
if (!$vbulletin->GPC['do'])
{
    if (!
$db->query_first("SELECT * FROM footy_registration WHERE userid = " $vbulletin->userinfo['userid'] . ""))
    {
        
standard_error(fetch_error('footy_youneedtoregister'));
    }
    else
    {
        eval(
'print_output("' fetch_template('footy_main') . '");');
    }
}  

if (
$_GET['do'] == 'myteam')
{
eval(
'print_output("' fetch_template('footy_team') . '");');
}
?>
Everything actually works except the do=myteam
Reply With Quote
  #7  
Old 06-11-2006, 12:06 AM
Adrian Schneider's Avatar
Adrian Schneider Adrian Schneider is offline
 
Join Date: Jul 2004
Posts: 2,528
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Like I told you earlier, $vbulletin->GPC['do'] is never defined. Change that to $_GET['do'] and it will work as expected.

Your
PHP Code:
if (!$vbulletin->GPC['do']) 
condition will always return true, because of the above.
Reply With Quote
  #8  
Old 06-11-2006, 12:37 AM
sambah sambah is offline
 
Join Date: May 2006
Posts: 67
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Aha, sorry I didnt read that. Thanks

/me tests it

edit: cant believe i missed that PM. thats had me hung for days. Thanks so much adrian.

Under what circumstances WOULD you use $vbulletin->GPC['do']) ?

vb seems to use it in a few places
Reply With Quote
  #9  
Old 06-11-2006, 12:46 AM
Adrian Schneider's Avatar
Adrian Schneider Adrian Schneider is offline
 
Join Date: Jul 2004
Posts: 2,528
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by sambah
Aha, sorry I didnt read that. Thanks

[high]* Adrian Schneider tests it
[/high]

edit: cant believe i missed that PM. thats had me hung for days. Thanks so much adrian.

Under what circumstances WOULD you use $vbulletin->GPC['do']) ?

vb seems to use it in a few places
No problem.

There isn't much point in cleaning the $_GET['do'] value unless you are using it in queries (or as data). But if you are just using it for navigation, why bother...

To "clean" it, you would have to first:
PHP Code:
$vbulletin->input->clean_array_gpc('g', array(
    
'do' => TYPE_STR
)); 
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:10 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.04554 seconds
  • Memory Usage 2,282KB
  • 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
  • (2)bbcode_code
  • (3)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (9)postbit_onlinestatus
  • (9)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