[ic] incrementing array index in [perl]

Ryan Grace interchange-users@icdevgroup.org
Thu Feb 6 02:00:01 2003


Hi All,

I've been banging my head on this one for hours now
and have searched the archives to no avail.  I'm
hoping someone knows this one.

I've got a block of perl in a [perl] tag.  I'm trying
to figure out the current page to show, the next page
to show, and the previous page to show, all for some
navigation links furthur down the page.  I'm assigning
page numbers from the database to scratch variables to
keep track of the next, current, and previous pages.

In the following code, the pagemin and pagemax scratch
variables are set correctly, so I know the array of
values form the DB is good.  The viewpage scratch
variable is also set correctly.  I've got some
[scratch] tags further down the page that show me the
values they're set to each time.  However, the last
two variables I can not get right.  I can't get the
nextpage and prevpage vars to set.  I think it's a
problem with the array indexes.  If I set one of the
scratches like:  $Scratch->{prevpage} = $pages[2]; it
works fine.  But the way it is below does not work. 
Any ideas?

---------------------------

[perl tables=products interpolate=1]
    my $db = $Db{products};

    $set = $db->query("SELECT page FROM products WHERE
inactive != 1 AND collec\
tion = '[cgi cn]' ORDER BY 1 ASC");

    @pages = ();

    foreach my $row (@$set) {
        push (@pages, $$row[0]) if ($$row[0] ne "");;
    }

    $Scratch->{pagemin} = $pages[0];
    $Scratch->{pagemax} = $pages[$#pages];

    if ($CGI->{page}) {
        $Scratch->{viewpage} = $CGI->{page};
    }
    else {
        $Scratch->{viewpage} = $pages[0];
    }

    my $incr = 0;

    foreach (sort @pages) {
        if ($_ = $Scratch->{viewpage}) {
            $prev = $Scratch->{incr} - 1;
            $next = $Scratch->{incr} + 1;
            $Scratch->{nextpage} = $pages[$next];
            $Scratch->{prevpage} = $pages[$prev];
        }

        $Scratch->{incr}++;
    }

    return;
[/perl]

Of course I've also tried the more obvious
$Scratch->{prevpage} = $pages[$incr-1], which is my
preferred method, but that doesn't work either.

Thanks for any insights.  It's making me crazy. :)

Ryan

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com