Go Back   CodingForums.com > :: Server side development > PHP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 04-25-2006, 06:50 PM   PM User | #1
arch13
New to the CF scene

 
Join Date: Jan 2005
Posts: 9
Thanks: 0
Thanked 0 Times in 0 Posts
arch13 is an unknown quantity at this point
Unhappy Creating previous and next links for a gallery

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:
PHP Code:
$pre_href 'index.php?id=brewery/brewery&id2=';
$post_href '';
$page_no $HTTP_GET_VARS['id2'];
print 
navigation($pre_href$post_href121103$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:
PHP Code:
 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 && $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_page1);

        
# 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 maxmin($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 && $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>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-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>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+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;


Last edited by arch13; 04-26-2006 at 06:23 AM.. Reason: Git the function working, Now on to the implimenting
arch13 is offline   Reply With Quote
Old 04-25-2006, 08:52 PM   PM User | #2
chump2877
Senior Coder

 
chump2877's Avatar
 
Join Date: Dec 2004
Location: the U.S. of freakin' A.
Posts: 2,530
Thanks: 15
Thanked 128 Times in 121 Posts
chump2877 is on a distinguished road
Quote:
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?
__________________
Regards, R.J.
chump2877 is offline   Reply With Quote
Old 04-26-2006, 02:39 AM   PM User | #3
arch13
New to the CF scene

 
Join Date: Jan 2005
Posts: 9
Thanks: 0
Thanked 0 Times in 0 Posts
arch13 is an unknown quantity at this point
Quote:
Originally Posted by chump2877
What is the error message or messages that you are getting?
I get the error message:

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

Last edited by arch13; 04-26-2006 at 03:08 AM..
arch13 is offline   Reply With Quote
Old 04-26-2006, 03:15 AM   PM User | #4
chump2877
Senior Coder

 
chump2877's Avatar
 
Join Date: Dec 2004
Location: the U.S. of freakin' A.
Posts: 2,530
Thanks: 15
Thanked 128 Times in 121 Posts
chump2877 is on a distinguished road
are you sure that this line (line 1):

PHP Code:
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
PHP Code:
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...
Quote:
Edit:

change the first line to:

PHP Code:
function navigation($pre_href$post_href$num_items$items_per_page$active$nearby$threshold
to print what the function returns for those values, do:

PHP Code:
print navigation('index.php?id=brewery&id2=?','',12,1,1,0,3); 
__________________
Regards, R.J.

Last edited by chump2877; 04-26-2006 at 03:23 AM..
chump2877 is offline   Reply With Quote
Old 04-26-2006, 03:32 AM   PM User | #5
arch13
New to the CF scene

 
Join Date: Jan 2005
Posts: 9
Thanks: 0
Thanked 0 Times in 0 Posts
arch13 is an unknown quantity at this point
Quote:
Originally Posted by chump2877
are you sure that this line (line 1):

PHP Code:
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
PHP Code:
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.
arch13 is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

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 +1. The time now is 01:54 PM.


Advertisement
Log in to turn off these ads.