Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 06-17-2006, 04:08 AM
Antivirus's Avatar
Antivirus Antivirus is offline
 
Join Date: Sep 2004
Location: Black Lagoon
Posts: 1,090
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default how do i add a conditional to a query?

Trying to add a conditional to the following query, but can't quite get it to work... any ideas what i am doing wrong?

PHP Code:
$querycontents $db->query_read("
                        SELECT erc_content.*, erc_contenttype.contenttype
                        FROM erc_content
                        LEFT JOIN erc_contenttype ON erc_content.contentid = erc_contenttype.contenttypeid
                        "
);

    if (
$_GET['contenttypeid'])
    {
        
$querycontents .= " AND erc_content.contenttypeid = '".$_GET['contenttypeid']."'";
    }    
    
$querycontents .= " ORDER BY erc_contenttype.displayorder, erc_content.displayorder"
Reply With Quote
  #2  
Old 06-17-2006, 04:10 AM
amykhar's Avatar
amykhar amykhar is offline
 
Join Date: Oct 2001
Location: PA
Posts: 4,438
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

you're doing the query before you set the conditional. At least it looks that way at first glance.
Reply With Quote
  #3  
Old 06-17-2006, 04:31 AM
Antivirus's Avatar
Antivirus Antivirus is offline
 
Join Date: Sep 2004
Location: Black Lagoon
Posts: 1,090
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanks Amy, i still can't figure it out though - until i can, this should be a work around, however i know it should be able to make it happen- just neeed to work on it......

PHP Code:
    if ($_GET['contenttypeid'])
    {
        
$querycontents $db->query_read("
                        SELECT erc_content.*, erc_contenttype.contenttype
                        FROM erc_content
                        LEFT JOIN erc_contenttype ON erc_content.contentid = erc_contenttype.contenttypeid
                        AND erc_content.contenttypeid = '"
.$_GET['contenttypeid']."'
                        ORDER BY erc_contenttype.displayorder, erc_content.displayorder
                        "
);
    }    
    else
    {
        
$querycontents $db->query_read("
                        SELECT erc_content.*, erc_contenttype.contenttype
                        FROM erc_content
                        LEFT JOIN erc_contenttype ON erc_content.contentid = erc_contenttype.contenttypeid
                        ORDER BY erc_contenttype.displayorder, erc_content.displayorder
                        "
);
    } 
Reply With Quote
  #4  
Old 06-17-2006, 05:29 AM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Build the query as a variable (like $sql) first, and then run it afterwards.

(BTW, there is nothing wrong with doing it the way you have in your "workaround").
Reply With Quote
  #5  
Old 06-17-2006, 06:56 AM
Alan @ CIT Alan @ CIT is offline
 
Join Date: Nov 2004
Location: South UK
Posts: 625
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try:

PHP Code:
$query "SELECT erc_content.*, erc_contenttype.contenttype
    FROM erc_content
    LEFT JOIN erc_contenttype ON erc_content.contentid = erc_contenttype.contenttypeid
    " 
. ($_GET['contenttypeid'] ? "AND erc_content.contenttypeid = '" $_GET['contenttypeid'] . "'" '') . "
    ORDER BY erc_contenttype.displayorder, erc_content.displayorder"
;

$contents $db->query_first($query); 
Although... your query looks wrong to me - it doesn't have a WHERE clause in it

Also, you shouldn't use $_GET[] directly within the query, clean it using the input_cleaner class first

Oh, and don't forget table prefixes!

Thanks,
Alan.
Reply With Quote
  #6  
Old 06-20-2006, 09:24 PM
Antivirus's Avatar
Antivirus Antivirus is offline
 
Join Date: Sep 2004
Location: Black Lagoon
Posts: 1,090
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

lol, the AND shoudl have been a WHERE (oops)
PHP Code:
    if ($_GET['contenttypeid'])
    {
        
$querycontents $db->query_read("
                        SELECT erc_content.*, erc_contenttype.contenttype
                        FROM erc_content
                        LEFT JOIN erc_contenttype ON erc_content.contentid = erc_contenttype.contenttypeid
                        WHERE erc_content.contenttypeid = '"
.$_GET['contenttypeid']."'
                        ORDER BY erc_contenttype.displayorder, erc_content.displayorder
                        "
);
    }    
    else
    {
        
$querycontents $db->query_read("
                        SELECT erc_content.*, erc_contenttype.contenttype
                        FROM erc_content
                        LEFT JOIN erc_contenttype ON erc_content.contentid = erc_contenttype.contenttypeid
                        ORDER BY erc_contenttype.displayorder, erc_content.displayorder
                        "
);
    } 
As far as cleaning the $_GET thing, and the table prefixes, that's my next thing to get working... will post completed when i finish it. Thanks Alan!

Paul, i am going to try to do what you said, but I am a little confused, didn't i already build the query as the variable $querycontents?
Reply With Quote
Reply

Thread Tools
Display Modes

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 07:16 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.09940 seconds
  • Memory Usage 2,222KB
  • 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
  • (4)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (6)post_thanks_box
  • (6)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (6)post_thanks_postbit_info
  • (6)postbit
  • (6)postbit_onlinestatus
  • (6)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