...

View Full Version : Creating previous and next links for a gallery



arch13
04-25-2006, 06:50 PM
Edit: So with a little help from chump2877, I got the function working without throwing errors. Now I'm having trouble with my implimentation.

My problem is that I only want to display the current page number and the prev/next arrows.
on the "Print navigation: line, i defined the variable for 12 items total, only one item per page, 1 active link, 0 Near by links.

All I want is for it to display the < and > links with the current page number between them, like so:
< 5 >

The code to create the links from this function is:


$pre_href = 'index.php?id=brewery/brewery&id2=';
$post_href = '';
$page_no = $HTTP_GET_VARS['id2'];
print navigation($pre_href, $post_href, 12, 1, 1, 0, 3, $page_no);


The page I'm trying to effect is:
http://www.arch13.com/index.php?id=brewery&id2=1

You can see that I have a rudimentry version working of the function and the print navigation. Howeverm it needs refining.

The relevant code is:


function navigation($pre_href, $post_href, $num_items, $items_per_page, $active, $nearby, $threshold)
{
# is the ellipse character: "..."
$space = '<span class="spacer"> '."\n\t".'</span>';

# There's no point in printing this string if there are no items,
# Or if they all fit on one page.
if ($num_items > 0 && $num_items > $items_per_page)
{
# STEP 1:
# Force variables into certain values.

# $items_per_page can't be smaller than 1!
# Also, avoid division by zero later on.
$items_per_page = max($items_per_page, 1);

# Calculate the number of listing pages.
$total = ceil($num_items/$items_per_page);

# $active can't be higher than $total or smaller than 1!
$active = max( min($active,$total), 1);

# STEP 2:
# Do the rest.

# Get the sequence of pages to show links to.
$pages = navigationSequence($total, $active, $nearby, $threshold);

# Print a descriptive string.
$first = ($active-1)*$items_per_page + 1;
$last = min($first+$items_per_page-1, $num_items);
if ($first == $last)
$listing = $first;
else
# is the EN dash, the proper hyphen to use.
$listing = $first.''.$last;
$r = '<p class="navigation">'."\n\tShowing $listing of $num_items<br />\n";

# Initialize the list of links.
$links = array();

# Add "previous" link.
if ($active > 1 && $total > 1)
$links[] = '<a href="'.$pre_href.($active-1).$post_href.
'" class="prev" title="Previous">&laquo;</a>';

# Decide how the each link should be presented.
for($i=0; $i<sizeof($pages); $i++)
{
# Current link.
$curr = $pages[$i];

# See if we should any $spacer in connection to this link.
if ($i>0 AND $i<sizeof($pages)-1)
{
$prev = $pages[$i-1];
$next = $pages[$i+1];

# See if we should any $spacer *before* this link.
# (Don't add one if the last link is already a spacer.)
if ($prev < $curr-1 AND $links[sizeof($links)-1] != $space)
$links[] = $space;
}

# Add the link itself!
# If the link is not the active page, link it.
if ($curr != $active)
$links[] = '<a href="'.$pre_href.$curr.$post_href.'">'.$curr.'</a>';
# Else don't link it.
else
$links[] = '<strong class="active">'.$active.'</strong>';

if ($i>0 AND $i<sizeof($pages)-1)
{
# See if we should any $spacer *after* this link.
# (Don't add one if the last link is already a spacer.)
if ($next > $curr+1 AND $links[sizeof($links)-1] != $space)
$links[] = $space;
}
}

# Add "next" link.
if ($active < $total && $total > 1)
$links[] = '<a href="'.$pre_href.($active+1).$post_href.
'" class="next" title="Next">&raquo;</a>';

# Put it all together.
$r .= "\t".implode($links, "\n\t")."\n</p>\n";
$r = str_replace("\n\t".$space."\n\t", $space, $r);

return $r;
}
else
return false;
}

chump2877
04-25-2006, 08:52 PM
I've modified it a little, but keep getting error messages on line 2.

What is the error message or messages that you are getting?

arch13
04-26-2006, 02:39 AM
What is the error message or messages that you are getting?

I get the error message:



Parse error: parse error, unexpected '{' in /homepages/6/d93661089/htdocs/brewery/brewery.php on line 21

chump2877
04-26-2006, 03:15 AM
are you sure that this line (line 1):


print navigation($pre_href='index.php?id=brewery&id2=?', $post_href='', $num_items=12, $items_per_page=1, $active=1, $nearby=0, $threshold=3)

isn;t


function navigation($pre_href='index.php?id=brewery&id2=?', $post_href='', $num_items=12, $items_per_page=1, $active=1, $nearby=0, $threshold=3)

Your code is returning a value at the end, so it would seem to indicate that this code is a user-defined function...


Edit:

change the first line to:


function navigation($pre_href, $post_href, $num_items, $items_per_page, $active, $nearby, $threshold)

to print what the function returns for those values, do:


print navigation('index.php?id=brewery&id2=?','',12,1,1,0,3);

arch13
04-26-2006, 03:32 AM
are you sure that this line (line 1):


print navigation($pre_href='index.php?id=brewery&id2=?', $post_href='', $num_items=12, $items_per_page=1, $active=1, $nearby=0, $threshold=3)

isn;t


function navigation($pre_href='index.php?id=brewery&id2=?', $post_href='', $num_items=12, $items_per_page=1, $active=1, $nearby=0, $threshold=3)

Your code is returning a value at the end, so it would seem to indicate that this code is a user-defined function...

Thank You!
I got it working and printing links the minute I followed your advice!
I edited the first post to try and figure out why the links are not behaving as I expected, but thank you for helping me with the function. I suspect I made a fairly obvious mistake. :thumbsup:



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum