vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Coding problem (https://vborg.vbsupport.ru/showthread.php?t=117947)

sambah 06-07-2006 10:56 PM

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?

noppid 06-07-2006 11:11 PM

Could you do a show table query and let us see the two table structures before we comment on the query?

sambah 06-07-2006 11:25 PM

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

http://img215.imageshack.us/img215/1...ures5cm.th.jpg

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

noppid 06-08-2006 01:30 AM

What I'm looking for are indexes.

Damn, I can see how this could be frustrating. I want to just try my ideas. :p

Eikinskjaldi 06-10-2006 05:39 AM

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.

sambah 06-11-2006 12:04 AM

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

Adrian Schneider 06-11-2006 12:06 AM

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.

sambah 06-11-2006 12:37 AM

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

Adrian Schneider 06-11-2006 12:46 AM

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
)); 



All times are GMT. The time now is 07:57 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.01129 seconds
  • Memory Usage 1,772KB
  • 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
  • (3)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)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