Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 05-04-2012, 10:43 AM
career career is offline
 
Join Date: Feb 2009
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default PHP multiselect and page navigation

Good day

Need a little help or advice.

How not to show long list of forum ids when changing pages?
Because now when choose several forums and press page 2, the link is
test.php?do=show&pp=20&page2&forum[]=91&forum[]=95&forum[]=99.
Is there a way I can hide from url such string '&forum[]=91&forum[]=95&forum[]=99' and keep work page navigation?

For one of my new pages I use Multiselect, i mean something like this in template
Code:
<label for="select_forum">Choose forum</label>
<select name="forum[]" id="select_forum" size="4" style="display:block" multiple="multiple">
<option value="0" $noforumselected>All forums</option>
<option value="91">Test forum1 with forumid 91</option>
<option value="95">Test forum2 with forumid 95</option>
<option value="99">Test forum2 with forumid 99</option>						
</select>
This code i put into form

Code:
<form action="test.php?do=show" method="post">
<input type="hidden" name="s" value="$session[sessionhash]" />
<input type="hidden" name="page" value="$pagenumber" />
<input type="hidden" name="pp" value="$perpage" />
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" />
<input type="hidden" name="do" value="viewthreads" />

<label for="select_forum">Choose forum</label>
<select name="forum[]" id="select_forum" size="4" style="display:block" multiple="multiple">
<option value="0" $noforumselected>All forums</option>
<option value="91">Test forum1 with forumid 91</option>
<option value="95">Test forum2 with forumid 95</option>
<option value="99">Test forum2 with forumid 99</option>						
</select>

</form>

In test.php i have required code for working page navigation

PHP Code:

.............
.............

// ###############################
if ($_REQUEST['do'] == 'show')
{
    
$vbulletin->input->clean_array_gpc('r', array(
        
'perpage'    => TYPE_UINT,
        
'pagenumber' => TYPE_UINT,
        
'daysprune'  => TYPE_INT,
        
'sortfield'  => TYPE_NOHTML,
        
'sortorder'  => TYPE_NOHTML,
        
'forum'    => TYPE_ARRAY
    ));


............
............

$sortfield  =& $vbulletin->GPC['sortfield'];
$perpage    =& $vbulletin->GPC['perpage'];
$pagenumber =& $vbulletin->GPC['pagenumber'];
$daysprune  =& $vbulletin->GPC['daysprune'];
$forum    =& $vbulletin->GPC['forum'];

............
............

$sorturl "test.php?" $vbulletin->session->vars['sessionurl'] . "do=show&amp;forum[]=" implode('&amp;forum[]='$vbulletin->GPC['forum']) . "&amp;pp=$perpage&amp;daysprune=$daysprune";

$pagenav construct_page_nav($pagenumber$perpage$totalthreads$sorturl "&amp;sort=$sortfieldiif(!empty($vbulletin->GPC['sortorder']), "&amp;order=" $vbulletin->GPC['sortorder'])); 
Reply With Quote
  #2  
Old 05-04-2012, 10:58 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't know if I follow everything you're doing. I assume there's more than one place $sorturl is used, to sort in different ways? Anyway, maybe you could do something like change the form to:

Code:
<form name="sortform" method="post">

and then where the link is:

Code:
<a href="javascript:document.sortform.submit()">Sort</a>
Reply With Quote
  #3  
Old 05-04-2012, 11:29 AM
career career is offline
 
Join Date: Feb 2009
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
I assume there's more than one place $sorturl is used
Yes, it's also used for sorting on page, standart vb code from my template:

HTML Code:
<a href="$sorturl&amp;order=desc&amp;sort=voteavg" rel="nofollow">$vbphrase[rating]</a> $sortarrow[voteavg]</span>
....
<a href="$sorturl&amp;order=asc&amp;sort=title" rel="nofollow">$vbphrase[thread]</a> $sortarrow[title] /
....
<a href="$sorturl&amp;order=asc&amp;sort=postusername" rel="nofollow">
.....
Thanks for your advice, kh99. But I didn't plan to use javascript.

Just can't realize how to make construct_page_nav() work without long url and so many vars in it. Would be great to have a working url for 2nd page like test.php?do=show&page=2 or something but not containing too much variables like now.

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

btw, this code just modified mostly from moderation.php and template "moderation_threads".
VB 3.8
I've added multiselect for choosing multiple forums, that's it.
Reply With Quote
  #4  
Old 05-04-2012, 11:43 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by career View Post
Thanks for your advice, kh99. But I didn't plan to use javascript.

Just can't realize how to make construct_page_nav() work without long url and so many vars in it. Would be great to have a working url for 2nd page like test.php?do=show&page=2 or something but not containing too much variables like now.
I see. But of course all the data needed to display the page has to be passed from one page to the next, and if it's not part of the url then the only other way is to post it as a form. I suppose if it's just the url length you're worried about you could somehow encode the info into one parameter, like maybe:

Code:
test.php?do=show&params=20,2,91,95,99

Then something like:
Code:
$vbulletin->input->clean_gpc('r', 'params', TYPE_STR);
$params = split(',', $vbulletin->GPC['params']);
$pp = $params[0];
$page = $params[1];
$forum = array_slice($params, 2);
Reply With Quote
  #5  
Old 05-04-2012, 11:53 AM
career career is offline
 
Join Date: Feb 2009
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks! I'll try this way.

Another way I thought I could rewrite construct_page_nav() for myself needs.
I mean, by default it is construct_page_nav($pagenumber, $perpage, $results, $address, $address2 = '', $anchor = '')

but if I change it to construct_page_nav2($pagenumber, $perpage, $new_var_forums, $results, $address, $address2 = '', $anchor = '') would that help me to pass forum array from one page to the next?

Thanks kh99!
Reply With Quote
  #6  
Old 05-04-2012, 12:16 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, you could do that.

Also I should mention that you'd want to be careful to force those parameters to be integers (which I didn't do in my example code above).
Reply With Quote
  #7  
Old 05-05-2012, 07:13 AM
career career is offline
 
Join Date: Feb 2009
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Also I should mention that you'd want to be careful to force those parameters to be integers
Thanks, once i'm done it i'll write back here
Reply With Quote
Reply


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 11:49 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03977 seconds
  • Memory Usage 2,244KB
  • Queries Executed 13 (?)
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
  • (6)bbcode_code
  • (1)bbcode_html
  • (1)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)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_postinfo_query
  • fetch_postinfo
  • 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