vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Cutom Field on Custom Page?? (https://vborg.vbsupport.ru/showthread.php?t=216711)

cono1717 06-21-2009 12:03 PM

Cutom Field on Custom Page??
 
How do I access a users selection from a custom field on a custom page.

Currently I have tried $auinfo[field7] $userinfo[field7] which brings up nothing and $bbuserinfo[field7] which brings up my selection when I want to see their selection.

Any help?

Thanks

Lynne 06-21-2009 02:33 PM

Are you sure field 7 is the correct field number? What does your template look like? What is the query you are using to get this users info? Did you make sure to JOIN with the userfield table?

cono1717 06-21-2009 05:33 PM

1) yes 7 is the correct number.

2) My template is the following.
ACTIVITY
HTML Code:

$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - Activity Statistics</title>
</head>
<body$onload>
$header
$navbar
<div align="center">
<form action="activity.php" method="get">
<strong>Choose another timeframe:</strong><br />
<select name="m">$mbits</select> <select name="y">$ybits</select> <input type="submit" name="submit" value="Go" />
</form>
</div>
<br />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
        <td class="tcat" colspan="6">
                Activity Statistics for $monthliteral
        </td>
</tr>
<tbody>
        <tr>
                <td class="thead">Rank</td>
                <td class="thead">Username</td>
                <td class="thead">Current Package</td>
                <td class="thead">Posts This Month</td>
                <td class="thead">Posts Required</td>
                <td class="thead">Action Needed?</td>

        </tr>
$userbits
</tbody>
</table>
$footer

</body>
</html>

ACTIVITY_bits
HTML Code:

<tr>
                <td class="alt1">$c</td>
                <td class="alt2"><a href="member.php?$session[sessionurl]u=$auinfo[userid]">$auinfo[username]</a>
                <td class="alt1">$auinfo[field5]</td>
                <td class="alt2">$auinfo[total]</td>
                <td class="alt2">30</td>
<if condition="is_member_of($bbuserinfo, 5, 6, 7)">
<if condition="$auinfo[total] == 30">
<td class="alt1">No Action Required</td>
<else />
<td class="alt1"><font color="#FF0000"><b>Action Required</b></font></td>
</if></if>
        </tr>

3)I am not sure what you mean here so I here is the PHP file.

PHP Code:

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT''activity');

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

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

// pre-cache templates used by all actions
$globaltemplates = array('ACTIVITY','ACTIVITY_bits''ACTIVITY_mbits''ACTIVITY_ybits''MEMBERINFO''memberinfo_profilefield');

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

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

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

if(empty($_REQUEST['do']))
{

    
// sanitize the variables myself
    
if(empty($_REQUEST['m']))
    {
        
$month vbdate('n');
        
$monthliteral vbdate('F');
    }
    else
    {
        
$month intval($_REQUEST['m']);
        
$monthliteral $months["$_REQUEST[m]"];
    }
    
    if(empty(
$_REQUEST['y']))
    {
        
$year vbdate('Y');
    }
    else
    {
        
$year intval($_REQUEST['y']);
    }

    
// generate months dropdown
    
$months = array(
        
=> 'January',
        
=> 'February',
        
=> 'March',
        
=> 'April',
        
=> 'May',
        
=> 'June',
        
=> 'July',
        
=> 'August',
        
=> 'September',
        
10 => 'October',
        
11 => 'November',
        
12 => 'December'
    
);
    
    foreach(
$months AS $mkey => $mval)
    {
        if(
$mkey == $month)
        {
            
$checked ' selected="selected"';
        }
        eval(
'$mbits .= "' fetch_template('ACTIVITY_mbits') . '";');
        unset(
$checked);
    }
    
    
// generate years dropdown
    
for($i intval(vbdate('Y')); $i intval(vbdate('Y')) + 4$i++)
    {
        if(
$i == $year)
        {
            
$checked2 ' selected="selected"';
        }
        eval(
'$ybits .= "' fetch_template('ACTIVITY_ybits') . '";');
        unset(
$checked2);
    }            
    
    
// important cutoff data
    
$cutoffstart gmmktime(000$month1$year);
    
$cutoffend gmmktime(000$monthvbdate('t'$cutoffstart), $year);
    
    
//echo $cutoffstart . '=' . TIMENOW;
    
    
if($cutoffstart TIMENOW)
    {
        eval(
standard_error('This date is in the future. You cannot select it. Go back and select antoher.'));    
    }
    
    
// limit our records
    
$limit 30000;    

    
// run query
    
$getusers $db->query("
        SELECT COUNT(p.postid) AS total
            ,p.userid
            ,u.username
            ,u.joindate
        FROM
            " 
TABLE_PREFIX "post AS p
        LEFT JOIN
            " 
TABLE_PREFIX "user as u
                ON
                    u.userid = p.userid            
        WHERE
            p.dateline > 
$cutoffstart
            AND
                p.dateline < 
$cutoffend
        GROUP BY
            userid
        ORDER BY
            total DESC
        LIMIT
            
$limit
    "
);
    
    
$c 0;
    while(
$auinfo $db->fetch_array($getusers))
    {
        
$c++;
        
$auinfo['joindate'] = vbdate($vbulletin->options['dateformat'], $auinfo['joindate'], true);
        eval(
'$userbits .= "' fetch_template('ACTIVITY_bits') . '";');    
    }
    
    
$navbits construct_navbits(array('' => 'Activity Statistics'));
    eval(
'$navbar = "' fetch_template('navbar') . '";');
    
    eval(
'print_output("' fetch_template('ACTIVITY') . '");');    
}

?>

4) Don't get what you mean so probably not, someone else built this system I am just revamping it, only I can't find the guy that built it (non vBulletin member btw)

Thanks in advance,

C

Lynne 06-21-2009 05:57 PM

You have only queried to get the userid and username. Nowhere in your query have you grabbed the fields from the userfield table. You can't use them in your template if never grabbed them in your query. You'll need to do another JOIN to the userfield in your $getusers query in order to have them available to you.

cono1717 06-21-2009 07:59 PM

I am not very familiar with mysql so could you tell me what that query would be and where I would put it please?

Cryo 06-21-2009 08:14 PM

If you change your SQL query to this...

PHP Code:

// run query
$getusers $db->query("
    SELECT COUNT(p.postid) AS total
        ,p.userid
        ,u.username
        ,u.joindate
        ,f.field7
    FROM
        " 
TABLE_PREFIX "post AS p,
        " 
TABLE_PREFIX "userfield AS f
    LEFT JOIN
        " 
TABLE_PREFIX "user as u
            ON
                u.userid = p.userid            
    WHERE
        p.dateline > 
$cutoffstart
        AND p.userid = f.userid
        AND    p.dateline < 
$cutoffend
    GROUP BY
        userid
    ORDER BY
        total DESC
    LIMIT
        
$limit
"
); 

It should work. The fields you list under the SELECT part of the query determines the results displayed. So if you don't specify you want a field to pull it won't be available in the results. Additionally, because userfields are stored in another table we need to add that with a reference.

cono1717 06-22-2009 08:12 AM

That gave me the following database error

Quote:

Database error in vBulletin 3.8.1:

Invalid SQL:

SELECT COUNT(p.postid) AS total
,p.userid
,u.username
,u.joindate
,f.field7
FROM
post AS p,
userfield AS f
LEFT JOIN
user as u
ON
u.userid = p.userid
WHERE
p.dateline > 1243814400
AND p.userid = f.userid
AND p.dateline < 1246320000
GROUP BY
userid
ORDER BY
total DESC
LIMIT
30000;

MySQL Error : Unknown column 'p.userid' in 'on clause'
Error Number : 1054
Request Date : Monday, June 22nd 2009 @ 09:11:30 AM
Error Date : Monday, June 22nd 2009 @ 09:11:30 AM
Script : http://www.geekstep.com/activity.php
Referrer :
IP Address : 80.47.176.108
Username : Connor
Classname : vB_Database
MySQL Version : 5.0.81-community

Dismounted 06-23-2009 10:01 AM

Find:
Code:

AND p.userid = f.userid
Replace With:
Code:

AND p.postuserid = f.userid

cono1717 06-23-2009 03:35 PM

New error now:-

Quote:

Database error in vBulletin 3.8.1:

Invalid SQL:

SELECT COUNT(p.postid) AS total
,p.userid
,u.username
,u.joindate
,f.field7
FROM
post AS p,
userfield AS f
LEFT JOIN
user as u
ON
u.userid = p.userid
WHERE
p.dateline > 1243814400
AND p.postuserid = f.userid
AND p.dateline < 1246320000
GROUP BY
userid
ORDER BY
total DESC
LIMIT
30000;

MySQL Error : Unknown column 'p.postuserid' in 'where clause'
Error Number : 1054
Request Date : Tuesday, June 23rd 2009 @ 04:34:56 PM
Error Date : Tuesday, June 23rd 2009 @ 04:34:56 PM
Script : http://www.geekstep.com/activity.php
Referrer :
IP Address : 80.47.2.106
Username : Connor
Classname : vB_Database
MySQL Version : 5.0.81-community

Dismounted 06-24-2009 06:49 AM

Actually. "p.userid" should be correct. Have you set a table prefix in your config.php?


All times are GMT. The time now is 06: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.01208 seconds
  • Memory Usage 1,813KB
  • 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_html_printable
  • (2)bbcode_php_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete