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 06-28-2010, 10:13 AM   PM User | #1
Sing
New Coder

 
Join Date: Oct 2009
Posts: 61
Thanks: 2
Thanked 1 Time in 1 Post
Sing is an unknown quantity at this point
Advanced pagination?

Hello! I am creating a little relatively simple virtual catalog, but frankly, I'm a coding novice (quite obviously) and could not figure out how to configure a regular pagination for my needs.

Here's the images:
#1 http://i45.tinypic.com/xc1uz9.png
#2 http://i47.tinypic.com/166fxv5.gif
#3 http://i49.tinypic.com/27xigec.gif


Basically, I would like the script to put 3 mysql outputs per each half, and if there's more than 6, create a new page and put the rest there. If there's let's say 7 outputs, I would like it it to use #1 & #3 as the backgrounds. If there's 13 outputs, I want it to use all three. I am expecting that it's going to require a transparent square to make the little folds work as a clickable to the next/previous page, in which case I'll make one.

If I left any details that you need to know to help me, just let me know, I'l be happy to post them. Help would be much appreciated!
Sing is offline   Reply With Quote
Old 06-28-2010, 08:56 PM   PM User | #2
Sing
New Coder

 
Join Date: Oct 2009
Posts: 61
Thanks: 2
Thanked 1 Time in 1 Post
Sing is an unknown quantity at this point
Here's a script I found. I just cannot get it to work the way I wanted - could anybody help?

PHP Code:
<?php
    
/*
        Place code to connect to your DB here.
    */
    
include('config.php');    // include your code to connect to DB.

    
$tbl_name="usr_furnidb";        //your table name
    // How many adjacent pages should be shown on each side?
    
$adjacents 3;
    
    
/* 
       First get total number of rows in data table. 
       If you have a WHERE clause in your query, make sure you mirror it here.
    */
    
$query "SELECT COUNT(*) as num FROM $tbl_name WHERE cat = '$_GET[cat]'";
    
$total_pages mysql_fetch_array(mysql_query($query));
    
$total_pages $total_pages[num];
    
    
/* Setup vars for query. */
    
$targetpage "test.php";     //your file name  (the name of this file)
    
$limit 3;                                 //how many items to show per page
    
$page $_GET['page'];
    if(
$page
        
$start = ($page 1) * $limit;             //first item to display on this page
    
else
        
$start 0;                                //if no page var is given, set start to 0
    
    /* Get data. */
    
$sql "SELECT * FROM $tbl_name WHERE cat = '$_GET[cat]' LIMIT $start, $limit";
    
$result mysql_query($sql);
    
    
/* Setup page vars for display. */
    
if ($page == 0$page 1;                    //if no page var is given, default to 1.
    
$prev $page 1;                            //previous page is page - 1
    
$next $page 1;                            //next page is page + 1
    
$lastpage ceil($total_pages/$limit);        //lastpage is = total pages / items per page, rounded up.
    
$lpm1 $lastpage 1;                        //last page minus 1
    
    /* 
        Now we apply our rules and draw the pagination object. 
        We're actually saving the code to a variable in case we want to draw it more than once.
    */
    
$pagination "";
    if(
$lastpage 1)
    {    
        
$pagination .= "<div class=\"pagination\">";
        
//previous button
        
if ($page 1
            
$pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
        else
            
$pagination.= "<span class=\"disabled\">« previous</span>";    
        
        
//pages    
        
if ($lastpage + ($adjacents 2))    //not enough pages to bother breaking it up
        
{    
            for (
$counter 1$counter <= $lastpage$counter++)
            {
                if (
$counter == $page)
                    
$pagination.= "<span class=\"current\">$counter</span>";
                else
                    
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                    
            }
        }
        elseif(
$lastpage + ($adjacents 2))    //enough pages to hide some
        
{
            
//close to beginning; only hide later pages
            
if($page + ($adjacents 2))        
            {
                for (
$counter 1$counter + ($adjacents 2); $counter++)
                {
                    if (
$counter == $page)
                        
$pagination.= "<span class=\"current\">$counter</span>";
                    else
                        
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                    
                }
                
$pagination.= "...";
                
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
                
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";        
            }
            
//in middle; hide some front and some back
            
elseif($lastpage - ($adjacents 2) > $page && $page > ($adjacents 2))
            {
                
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
                
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
                
$pagination.= "...";
                for (
$counter $page $adjacents$counter <= $page $adjacents$counter++)
                {
                    if (
$counter == $page)
                        
$pagination.= "<span class=\"current\">$counter</span>";
                    else
                        
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                    
                }
                
$pagination.= "...";
                
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
                
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";        
            }
            
//close to end; only hide early pages
            
else
            {
                
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
                
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
                
$pagination.= "...";
                for (
$counter $lastpage - (+ ($adjacents 2)); $counter <= $lastpage$counter++)
                {
                    if (
$counter == $page)
                        
$pagination.= "<span class=\"current\">$counter</span>";
                    else
                        
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";                    
                }
            }
        }
        
        
//next button
        
if ($page $counter 1
            
$pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
        else
            
$pagination.= "<span class=\"disabled\">next »</span>";
        
$pagination.= "</div>\n";        
    }
?>

    <?php
        
while($row mysql_fetch_array($result))
        {
            
        echo(
"<img src='$row[url]'> <BR>$row[furni] - $row[price] Credits<BR><font color='gray'>
----------------------------</font><BR><BR>"
);
    
        }
    
?>

<?=$pagination?>
Sing is offline   Reply With Quote
Old 06-30-2010, 11:02 AM   PM User | #3
alstonwillman
New to the CF scene

 
Join Date: Jun 2010
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
alstonwillman is an unknown quantity at this point
hi
i am using a form having about 10 field to fill.when I submit it redirect to another page where it find results on the bases of form values.That all is ok.But problem comes when i implements pagination , when i implement pagination script , according to script it page loads again and the forms values are disappear can u tell me how can i maintain form values so I can use a nice pagination.

Thanks in advance
alstonwillman 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 08:49 PM.


Advertisement
Log in to turn off these ads.