vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 4 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=242)
-   -   [HOW TO - vB4] Paginating Results (https://vborg.vbsupport.ru/showthread.php?t=221670)

S1OPP 01-04-2010 11:48 PM

I would really appreciate it if somebody could help me out.

I've built a page that pulls row from a sql db. Now I need to paginate the page as there are too many rows for one page.

I've followed the instructions as far as I can, changing only a few things, such as the sql queries.

The php is now limiting the number of rows to the correct perpage number. I've added the pagenav code to my custom template, but no matter what I do, the pagenav doesn't show.

Any help would be greatly appreciated.
S1OPP

BBR-APBT 01-05-2010 05:07 AM

Quote:

Originally Posted by S1OPP (Post 1947372)
I would really appreciate it if somebody could help me out.

I've built a page that pulls row from a sql db. Now I need to paginate the page as there are too many rows for one page.

I've followed the instructions as far as I can, changing only a few things, such as the sql queries.

The php is now limiting the number of rows to the correct perpage number. I've added the pagenav code to my custom template, but no matter what I do, the pagenav doesn't show.


Any help would be greatly appreciated.
S1OPP

First off it would be good to post code when asking for help. If we can't see it and all your saying is it don't work, it makes it very hard to help you. There could be a million reasons why it isn't working for you. I used this tutorial several times and it works every time like a charm.

cellarius 01-05-2010 05:25 AM

^^What he said :)

Quote:

Originally Posted by BBR-APBT (Post 1947564)
I used this tutorial several times and it works every time like a charm.

Good to know ;)

S1OPP 01-05-2010 06:24 AM

no problem.

sightings.php
PHP Code:

<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT''sightings');
define('CSRF_PROTECTION'true);  
// change this depending on your filename

// ################### 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('custom_sightings',
);

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

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');

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

$navbits construct_navbits(array('' => 'Sightings'));
$navbar render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle 'Sightings';

$link mysql_connect("xxxxxxxxxxxxx""xxxxxxx""xxxxxxx") or die("Impossible to connect :" mysql_error());



$row_usersightings = array ();

$vbulletin->input->clean_array_gpc('r', array(
    
'perpage'    => TYPE_UINT,
    
'pagenumber' => TYPE_UINT,
));  


mysql_select_db("mothstats") or die(mysql_error());


$cel_users mysql_query("
    SELECT COUNT('id') AS row_count
    FROM sightings
"
);  

sanitize_pageresults($cel_users['row_count'], $pagenumber$perpage10020);  

if (
$vbulletin->GPC['pagenumber'] < 1)
{
     
$vbulletin->GPC['pagenumber'] = 1;
}
else if (
$vbulletin->GPC['pagenumber'] > ceil(($cel_users['row_count'] + 1) / $perpage))
{
    
$vbulletin->GPC['pagenumber'] = ceil(($cel_users['row_count'] + 1) / $perpage);
}
$limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage;
$limitupper = ($vbulletin->GPC['pagenumber']) * $perpage;  


$usersightings mysql_query("SELECT * FROM sightings
                 ORDER BY id DESC
                LIMIT 
$limitlower$perpage");

while (
$row mysql_fetch_assoc($usersightings))
{
    
$row_usersightings[] = $row;
}

$pagenav construct_page_nav(
    
$vbulletin->GPC['pagenumber'],
    
$perpage,
    
$cel_users['row_count'],
    
'sightings.php?' $vbulletin->session->vars['sessionurl'// the pagenav-link
);  


// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######
vB_Template::preRegister('custom_sightings',array('row_usersightings' => $row_usersightings));
$templater vB_Template::create('custom_sightings');
$templater->register_page_templates();
$templater->register('navbar'$navbar);
$templater->register('pagetitle'$pagetitle);
$templater->register('row_usersightings'$row_usersightings);
$templater->register('pagenav'$pagenav);
$templater->register('pagenumber'$pagenumber);
$templater->register('perpage'$perpage);
$templater->register('output'$output);
print_output($templater->render());


?>

Templats : custom_sightings
PHP Code:

{vb:stylevar htmldoctype}
<
html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
  <
head>
    <
title>{vb:raw vboptions.bbtitle}</title>
    {
vb:raw headinclude}
  </
head>
  <
body>
    
    {
vb:raw header}
    
    {
vb:raw navbar}
 
<
vb:if condition="$pagenav">
     <
div id="pagination_top">
          {
vb:raw pagenav
     </
div>
</
vb:if> 
    
    <
div id="pagetitle">
      <
h1>{vb:raw pagetitle}</h1>
    </
div>
    
    <
h2 class="blockhead">Title</h2>
    <
div class="blockbody">
      <
div class="blockrow">
        <
div id="container">
<
div style="padding-left: 10px; padding-top:5px;">
  <
a href="sightingssubmit.php"><strong>Submit a sighting </strong></a> | <a href="sightings.php"><strong>Show all sightings   </strong></a>
        </
div>
<
br />
<
table width="95%" border="0" align="center" bgcolor="#FCFCFC">
<
tr>
               <
td bgcolor="#848E7B"><div align="left" class="style1">No.</div></td>
      <
td bgcolor="#848E7B"><div align="left" class="style1">Species</div></td>
      <
td bgcolor="#848E7B"><div align="left" class="style1">Date</div></td>
      <
td bgcolor="#848E7B"><div align="left" class="style1">Location</div></td>
      <
td bgcolor="#848E7B"><div align="left" class="style1">Recorder</div></td>
      <
td bgcolor="#848E7B"><div align="left" class="style1">Details</div></td>
    </
tr>
             
               <
vb:each from="row_usersightings" key="rowid" value="rowinfo">
               <
tr>
                 <
td width="30" valign="top" bgcolor="#FFFff4"><div align="left" class="style131 "> {vb:var rowinfo.id} </div></td>
                 <
td width="150" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"> {vb:var rowinfo.species}</div></td>
                 <
td width="50" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"> {vb:var rowinfo.date}</div></td>
                 <
td width="120" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"> {vb:var rowinfo.location}</div></td>
                 <
td width="100" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"> {vb:var rowinfo.recorder}</div></td>
                 <
td width="350" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"> {vb:var rowinfo.details}</div></td>
               </
tr>
               </
vb:each>
           
</
table>

</
div>

      </
div>
    </
div>  
    {
vb:raw footer}
  </
body>
</
html


S1OPP 01-06-2010 08:07 PM

Worked it out now,

thanks.

cellarius 01-07-2010 03:15 AM

Sorry, didn't come around to look at your code - but you working it out yourself is much better anyway :)

MrNase 01-22-2010 06:19 AM

Dont forget to use the &amp; like this when passing additional attributes. :)

PHP Code:

'do=category&amp;id='.$vbulletin->GPC['id'


This one seems to work at first but it does not when using the page number input:
PHP Code:

'do=category&id='.$vbulletin->GPC['id'


Jaxel 04-11-2010 01:15 AM

As of VB 4.0.3, I now have errors with page pagination on custom mods...

Example: http://test.8wayrun.com/media/c9-kogarasumaru

With VB 4.0.2, it looked fine, but now the last 3 elements are shifted.

Jaxel 04-21-2010 03:33 PM

Only happens in Chrome... only with vb4.0.3

https://vborg.vbsupport.ru/attachmen...hmentid=116129

This is code...
Code:

<vb:if condition="$pagenav">
        <div id="pagination_top" style="float: right;">
                {vb:raw pagenav}
        </div><br /><br />
</vb:if>


EquinoxWorld 07-22-2011 01:11 AM

Just wanted to say thank you for this article on pagination, I was finally able to understand it thanks to your post. Here is my example for those who are still trying to understand maybe this helps.

PHP Code:

<?php 
require_once('./global.php');

     
$vbulletin->input->clean_array_gpc('r', array(
    
'perpage'    => TYPE_UINT,
    
'pagenumber' => TYPE_UINT,
));

$cel_users $db->query_first("
    SELECT COUNT('edition') AS users_count
    FROM oftw_hall_of_fame 
"
);

sanitize_pageresults($cel_users['users_count'], $pagenumber$perpage505);

if (
$vbulletin->GPC['pagenumber'] < 1)
{
    
$vbulletin->GPC['pagenumber'] = 1;
}
else if (
$vbulletin->GPC['pagenumber'] > ceil(($cel_users['users_count'] + 1) / $perpage))
{
    
$vbulletin->GPC['pagenumber'] = ceil(($cel_users['users_count'] + 1) / $perpage);
}
$limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage;
$limitupper = ($vbulletin->GPC['pagenumber']) * $perpage

$pagenav construct_page_nav(
    
$vbulletin->GPC['pagenumber'],
    
$perpage,
    
$cel_users['users_count'],
    
'oftw_hall_of_fame.php?' $vbulletin->session->vars['sessionurl'], // the pagenav-link
    
''// to pass a second portion or the pagenav-link, gets directly appended to above
    
''// to pass an anchor
    
''// SEO-Link for thread, forum, member... pages - make the pagenav-links seo'ed if you use the paginator on one of those
    
''// Array to pass linkinfo for SEO-Link-Method
    
''  // Array to pass additional Info for SEO-Link-Method
);

$result $db->query_read("SELECT * FROM oftw_hall_of_fame LIMIT $limitlower$perpage");

if (
mysql_num_rows($result) > 0) { 
    
// yes 
    // print them one after another 
    
echo "<center><table>"
    while(
$row mysql_fetch_row($result)) { 
        echo 
"<tr>"
        echo 
"<td><center><u style=color:#417394;font-size:20px;><b style=color:#417394;>Signature Of The Week Edition #&nbsp;".$row[7]."&nbsp;</b></u></center>";
        echo 
"<center>Won With&nbsp;".$row[2]."&nbsp;Votes</center>";
        echo 
"<center>Nominated&nbsp;By:&nbsp;<b style=color:#3B81B7;><a href=http://development.aniworlds.net/member.php?".$row[6]."-".$row[4].">".$row[4]."&nbsp;</a></b></center>";
        echo 
"<center>Added:&nbsp;".date("F j, Y g:i a"strtotime($row[3]))."</center>";
        echo 
"<center>Created By:&nbsp;".$row[5]."</center></td>";
        echo 
"<td><center><img src =".$row[1]." style=padding-bottom:5px></center></td>";
        echo 
"</tr>"
    } 
    echo 
"</table></center>"

else { 
    
// no 
    // print status message 
    
echo "No Contests Have Been Started."



?>

This php file was then included as a variable (vb:raw) into a template of my choosing (pagination included!).


All times are GMT. The time now is 11:52 AM.

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.01398 seconds
  • Memory Usage 1,872KB
  • 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
  • (1)bbcode_code_printable
  • (5)bbcode_php_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)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