vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   query with left join and grouping. (https://vborg.vbsupport.ru/showthread.php?t=144931)

harmor19 04-15-2007 10:06 AM

query with left join and grouping.
 
I have two tables, "custom_droplinks_cat" and "custom_droplinks".
Below is the tables' layout. I hope it is easy to understand.

Code:

----------------------------------------
| Table: custom_droplinks_cat
----------------------------------------
| catid: 1
| title: Test Category 1
----------------------------------------
| catid: 2
| title: Test Category 2
----------------------------------------

----------------------------------------
| Table: custom_droplinks
----------------------------------------
| linkid: 1
| title: Test Link 1
| catid: 1
----------------------------------------
| linkid: 2
| title: Test Link 2
| catid: 1
----------------------------------------
| linkid: 3
| title: Test Link 4
| catid: 2
----------------------------------------
| linkid: 4
| title: Test Link 4
| catid: 2
----------------------------------------



I don't want to ask more than I need to so I'll just ask "How do I make "Test Category" bold then place "Test Link" immediately after followed by a break (br />)?

PHP Code:

$getdroplinks_cat $db->query_read("SELECT
    droplink_cat.catid as dlc_catid,
        droplink_cat.title as dlc_title,
    droplink.catid as dl_catid,
    droplink.title as dl_title,
    
    FROM " 
TABLE_PREFIX "custom_droplinks_cat AS droplink_cat
    LEFT JOIN " 
TABLE_PREFIX "custom_droplinks AS droplink ON (droplink_cat.catid=droplink.catid)
    WHERE droplink_cat.catid = droplink.catid "
);
    while(
$dlink $db->fetch_array($getdroplinks_cat))
{
  echo 
"<b>".$dlink['dlc_title']."</b><br />
  "
.$dlink['dl_title']."<br /><br />";




I want the result to be
Code:

Test Category 1
Test Link 1
Test Link 2

Test Category 2
Test Link 3
Test Link 4


Marco van Herwaarden 04-15-2007 11:24 AM

A basic example on how you could do this:
PHP Code:

$last_cat null;
while (
my loop conditions)
{
 if (
$last_cat != $current_cat)
 {
  
$last_cat $current_cat;
  echo 
"my nice bold line with the category";
 }
 echo 
"and my link";



harmor19 04-15-2007 11:33 AM

Thanks for answering my question. I'm going to try it out soon.

harmor19 04-17-2007 12:38 PM

I thought I could apply the solution Marco gave me to the real query but I can't get it to work.

Here is the actual code
PHP Code:

    <template name="custom_droplinks" templatetype="template" date="1176624912" username="harmor" version="1.6.0"><![CDATA[<div class="vbmenu_popup" id="adv$dlink[dlc_catid]menu_menu" style="display:none">
        <
table cellpadding="4" cellspacing="1" border="0">        
        <
tr><td class="thead">$dlink[title]</td></tr>    
$custom_droplinks_bit
        
</table>
    </
div>]]></template>
        <
template name="custom_droplinks_cat" templatetype="template" date="1176624827" username="harmor" version="1.6.0"><![CDATA[<td id="adv$dlink[dlc_catid]menu" class="vbmenu_control">
    <
a href="#">$dlink[title]</a>
    <
script type="text/javascript">
        
vbmenu_register("adv$dlink[dlc_catid]menu");
    </
script>
</
td>
]]></
template>


        <
plugin active="1" executionorder="5">
            <
title>Custom Links</title>
            <
hookname>global_start</hookname>
            <
phpcode><![CDATA[
    
    
$last_cat '0';
    
$getdroplinks_cat $db->query_read("SELECT
    droplink_cat.catid as dlc_catid,
    droplink.catid as dl_catid,
    droplink.new_window,
    droplink.link_perms,
    droplink.name,
    droplink.image,
    droplink.url,
    droplink.alt,
    droplink.number,
    droplink_cat.title,
    droplink_cat.permissions,
    droplink_cat.display
    
    FROM " 
TABLE_PREFIX "custom_droplinks_cat AS droplink_cat
    LEFT JOIN " 
TABLE_PREFIX "custom_droplinks AS droplink ON (droplink_cat.catid=droplink.catid)
    ORDER BY dl_catid ASC "
);
    while(
$dlink $db->fetch_array($getdroplinks_cat))                        
    {
            
        eval(
'$custom_droplinks_cat .= "' fetch_template('custom_droplinks_cat') . '";');                                
        
        
$custom_droplinks_bit .= "<tr><td class='vbmenu_option'>$img<a href='".$dlink['url']."' target='$new' title='".$dlink['alt']."'>".$dlink['name']."</a></td></tr>";
            
        eval(
'$custom_droplinks = "' fetch_template('custom_droplinks') . '";');
        
    } 


Marco van Herwaarden 04-17-2007 02:52 PM

Please post the actually code, i don't want to go decode your XML.
Also telling what is not working might also help.

harmor19 04-20-2007 04:12 PM

1 Attachment(s)
In the screenshot "Test1" is supposed to have "vBulletin" and "Test2" is supposed to have "Xen Web".

I'm not sure if this code snippet will suffice but I don't want to post all the code as it may be overwhelming.
PHP Code:

if($last_cat != $dlink['dlc_catid'])
{
    
$last_cat $dlink['dlc_catid'];
    eval(
'$custom_droplinks_cat .= "' fetch_template('custom_droplinks_cat') . '";');                                
}
        

$custom_droplinks_bit .= "<tr><td class='vbmenu_option'>$img<a href='".$dlink['url']."' target='$new' title='".$dlink['alt']."'>".$dlink['name']."</a></td></tr>"


Edit: I think I may have to do two separate queries.

harmor19 04-20-2007 04:43 PM

I figured out the mistake and I fixed it.
Thanks Marco for atleast making an effort to help.

I ran into another problem but I got it situated.
I'm posting the working code here for two reasons. One is if I lose the code and the other is for other people to look at.
I wanted to use "left join" but the query got to be too complicated for me.

PHP Code:

$last_cat '0';
    
$getdroplinks_cat $db->query_read("SELECT *
    FROM " 
TABLE_PREFIX "custom_droplinks_cat ORDER BY catid");
    while(
$dlink $db->fetch_array($getdroplinks_cat))                        
    {
    
        
$dlink['permissions'] = explode(","$dlink['permissions']);
    
        if(
$last_cat != $dlink['catid'])
        {
            if(
in_array($vbulletin->userinfo['usergroupid'], $dlink['permissions']) )
            {
                eval(
'$custom_droplinks_cat .= "' fetch_template('custom_droplinks_cat') . '";');    
            }
                                            
        }
        
        
$custom_droplinks_bit .= "<div class='vbmenu_popup' id='adv$dlink[catid]menu_menu' style='display:none'>
                <table cellpadding='4' cellspacing='1' border='0'>        
                <tr><td class='thead'>"
.$dlink['title']."</td></tr>";
        
        
$getdroplink_bits $db->query_read("SELECT * FROM " TABLE_PREFIX "custom_droplinks WHERE catid = '$dlink[catid]' ");
        while(
$droplink_bits $db->fetch_array($getdroplink_bits))
        {
    
            if(
$droplink_bits['new_window'] == 1)
               {
                
$new "_blank";
            }
            else
            {
                
$new "";
            }
            
            if(!empty(
$droplink_bits['image']))
            {
                
$img "<img src='".$droplink_bits['image']."' width='16' height='16' />";
            }
            else
            {
                
$img "";
            }
            
           
            
            
$droplink_bits['link_perms'] = explode(","$droplink_bits['link_perms']);    
        
            
            if(
in_array($vbulletin->userinfo['usergroupid'], $droplink_bits['link_perms']) )
            {
                
$custom_droplinks_bit .=
                
"<tr><td class='vbmenu_option'>$img<a href='".$droplink_bits['url']."' target='$new' title='".$droplink_bits['alt']."'>".$droplink_bits['name']."</a></td></tr>";
            }    
            
            
        }
        
        
$custom_droplinks_bit .= "</table></div>";
        
        eval(
'$custom_droplinks = "' fetch_template('custom_droplinks') . '";');
        
        
$last_cat $dlink['catid'];

    } 



All times are GMT. The time now is 04:25 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.01747 seconds
  • Memory Usage 1,793KB
  • 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
  • (5)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)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