vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Display ussergroup name instead of usergroup id (https://vborg.vbsupport.ru/showthread.php?t=230448)

Mythotical 12-18-2009 04:07 AM

Display ussergroup name instead of usergroup id
 
I have this in my admincp:

PHP Code:

<td class="alt1">' . $usergroupid . '</td

I want to have it display usergroup name instead of the usergroup id. Basically I just need the loop to use when I call the id's to match with the usergroup names then display the proper names or ALL if all usergroups have access.

This is the entire page code for just that one page:
PHP Code:

if ($_REQUEST['do'] == 'modfiles') {

    if (
$sendtoapp){
$fcount $db->query_first("SELECT COUNT(file_id) as fcount FROM " TABLE_PREFIX "download WHERE moderated = '1'");

if (
$fcount['fcount'] == '0'){
    
print_stop_message(bfc_download_nomod_files);
} else {
print_table_start();
print_table_header("BFC-Download :: Moderated File Listing"8);

$filesql $db->query_read("SELECT * FROM `" TABLE_PREFIX "download` WHERE moderated = '1'");

while (
$filerow $db->fetch_array($filesql))
{
    
$file_id            $filerow['file_id'];
    
$version            $filerow['version'];
    
$name                $filerow['name']; 
    
$title                $filerow['title'];
    
$description        $filerow['description'];
    
$usergroupid        $filerow['usergroupid'];
    
$type                $filerow['type'];
    
$size                $filerow['size'];
    
$username            $filerow['username'];
    
$userid                $filerow['userid'];
    
$catid                $filerow['catid'];
    
$bytes                vbmksize($size);

    echo 
'<tr><td class="alt2" align="center"><a href="user.php?do=edit&u=' $userid '">' $username '</a></td><td class="alt1">' $title '<br /><a href="download.php?id=' $file_id '">' $name '</a></td><td class="alt2">' $description '</td><td class="alt1">' $usergroupid '</td><td class="alt2">' $type '</td><td class="alt1">' $bytes '</td><td class="alt2">' $catid '</td><td class="alt1"><a href="download.php?do=okfile&amp;fid='.$file_id.'">Approve ' $username '\'s File</a></td></tr>';
}
}
    } else {
        
print_stop_message(bfc_download_noapproval);
    }

print_table_footer(8''''0);



Thanks
Steve

Mythotical 12-19-2009 04:42 AM

Any got an idea on this?

Lynne 12-19-2009 03:54 PM

You need to JOIN with the usergroup table (on the usergroupid, I'd guess) and get the usergroup.title

Mythotical 12-19-2009 04:34 PM

Nevermind, remembered back to another mod I did at one point, thanks Lynne, I'll do a JOIN on it.

Mythotical 12-22-2009 04:11 AM

Ok I did the JOIN, now I need to means to display it so it shows:

Code:

Super Moderators, Administrators
Instead of:
Code:

5,6
Right now it shows the first result instead of giving both names as there are 2 usergroupid's.

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

EDIT: I have tried this so far:

PHP Code:

$unames                $filerow['usergroupid'];
$unames                explode(','$unames);

foreach (
$unames AS $utitle)
{
        
$u $utitle;


Keep in mind this is pulling info from a SELECT with a LEFT JOIN. Here is the entire thing:

PHP Code:

$filesql $db->query_read("SELECT dls.*, ugroups.usergroupid AS uid, ugroups.title AS uname FROM `" TABLE_PREFIX "download` AS dls
                            LEFT JOIN `" 
TABLE_PREFIX "usergroup` AS ugroups ON (dls.usergroupid = ugroups.usergroupid)
                            WHERE moderated = '1'"
);


while (
$filerow $db->fetch_array($filesql))
{
    
$file_id            $filerow['file_id'];
    
$version            $filerow['version'];
    
$name                $filerow['name']; 
    
$title                $filerow['title'];
    
$description        $filerow['description'];
    
$usergroupid        $filerow['usergroupid'];
    
$type                $filerow['type'];
    
$size                $filerow['size'];
    
$username            $filerow['username'];
    
$userid                $filerow['userid'];
    
$catid                $filerow['catid'];
    
$bytes                vbmksize($size);
    
$unames                $filerow['usergroupid'];
    
$unames                explode(','$unames);

foreach (
$unames AS $utitle)
{
        
$u $utitle;
}

    echo 
'<tr><td class="alt2" align="center"><a href="user.php?do=edit&u=' $userid '">' $username '</a></td><td class="alt1">' $title '<br /><a href="download.php?id=' $file_id '">' $name '</a></td><td class="alt2">' $description '</td><td class="alt1">' $u '</td><td class="alt2">' $type '</td><td class="alt1">' $bytes '</td><td class="alt2">' $catid '</td><td class="alt1"><a href="download.php?do=okfile&amp;fid='.$file_id.'">Approve ' $username '\'s File</a></td></tr>';



Lynne 12-22-2009 03:16 PM

So, you are saying it should show two usergroups at times and currently it is not? I think you need to change this line:
PHP Code:

        $u .= $utitle

That will make it so you aren't overwriting it when you go through the loop. You should set $u to nothing ($u = ''; ) before entering the loop. Also, I think you want this to get the titles, not the id:
PHP Code:

    $unames                $filerow['uname']; 


Mythotical 12-22-2009 05:44 PM

Bah, its doing the opposite of what I want. I did the LEFT JOIN so now it displays 56 for one entry and 566 for another entry with no comma's and its not even giving the usergroup name.

Screenshot provided.

Mythotical 12-24-2009 05:19 PM

Still need help with this.

Lynne 12-24-2009 05:33 PM

Exactly what code are you using now?

Mythotical 12-26-2009 05:10 PM

The same code above. I even added your change and it still isn't working right.

Lynne 12-26-2009 05:20 PM

Well, you aren't using the same code if you have added changes, which is why I asked for it again.

What have you done debug-wise. Have you tried printing out $unames before you've done anything to it? What do you get?

Mythotical 12-26-2009 09:06 PM

I have tried to print it out and all I get is one name only. Which is from the last entry in the database.

Lynne 12-26-2009 09:30 PM

If you are printing out what is coming out of the database and only getting one item, then that means your query must be wrong if you think it is supposed to be getting several items.

But wait.... you are in a while loop - it only goes through one row per loop. Sounds to me like you need to group things by userid and then for each userid print out stuff.

Mythotical 12-26-2009 09:47 PM

Lynne, as much as I enjoy talking about a solution, let me provide you with the code and maybe you can suggest changes to it. This is the entire php line for the page I am wanting to the display of usergroups on.

PHP Code:

if ($_REQUEST['do'] == 'modfiles') {

    if (
$sendtoapp){
$fcount $db->query_first("SELECT COUNT(file_id) as fcount FROM " TABLE_PREFIX "download WHERE moderated = '1'");

if (
$fcount['fcount'] == '0'){
    
print_stop_message(bfc_download_nomod_files);
} else {
print_table_start();
print_table_header("BFC-Download :: Moderated File Listing"8);

$filesql $db->query_read("SELECT dls.*, ugroups.usergroupid AS uid, ugroups.title AS uname FROM `" TABLE_PREFIX "download` AS dls
                            LEFT JOIN `" 
TABLE_PREFIX "usergroup` AS ugroups ON (dls.usergroupid = ugroups.usergroupid)
                            WHERE moderated = '1'"
);

$u '';
while (
$filerow $db->fetch_array($filesql))
{
    
$file_id            $filerow['file_id'];
    
$version            $filerow['version'];
    
$name                $filerow['name']; 
    
$title                $filerow['title'];
    
$description        $filerow['description'];
    
$usergroupid        $filerow['usergroupid'];
    
$type                $filerow['type'];
    
$size                $filerow['size'];
    
$username            $filerow['username'];
    
$userid                $filerow['userid'];
    
$catid                $filerow['catid'];
    
$bytes                vbmksize($size);
    
$unames                $filerow['usergroupid'];
    
$unames                explode(','$unames);

foreach (
$unames AS $utitle)
{
        
$u .= $utitle;
}

    echo 
'<tr><td class="alt2" align="center"><a href="user.php?do=edit&u=' $userid '">' $username '</a></td><td class="alt1">' $title '<br /><a href="download.php?id=' $file_id '">' $name '</a></td><td class="alt2">' $description '</td><td class="alt1">' $u '</td><td class="alt2">' $type '</td><td class="alt1">' $bytes '</td><td class="alt2">' $catid '</td><td class="alt1"><a href="download.php?do=okfile&amp;fid='.$file_id.'">Approve ' $username '\'s File</a></td></tr>';
}
}
    } else {
        
print_stop_message(bfc_download_noapproval);
    }

print_table_footer(8''''0);




Lynne 12-26-2009 10:00 PM

Well, it depends on how open you are to what this list looks like. I'd group the query results by userid (look up Group for Mysql queries). Then, when going into my while loop, I'd see if the userid is the same as the previous userid (save the userid in the loop). If it isn't the same, I'd print out the name, title, whatever and then the first usergroup name. Then when you do the loop again, if the userid is the same as the previous one, just print out the new usergroup name. Once the userid is not the same as the previous one, it does a line break and prints the new name, title, whatever.

Mythotical 12-26-2009 11:22 PM

The list is of files that have been added and are in queue to be approved. It will display the name of the submitter, the file name, the file type, the usergroups that have permission to view the file, etc. So its not based on a userid its a matter of matching up usergroupid's from the file listing table with that of the usergroup table then displaying the appropriate name for each usergroupid no matter how many usergroupid's exist for that one file.

Lynne 12-27-2009 02:11 AM

Well, you know your database and this issue better than I, but you should be able to 'group' these in some way and then do it the way I said (group by file id?).

Mythotical 12-27-2009 06:28 AM

EDIT: I'm a jack ass, I can only say that I learn by coding examples better than question and answer.


All times are GMT. The time now is 03:11 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.01316 seconds
  • Memory Usage 1,847KB
  • 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
  • (7)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (18)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