doushan3511 2011-10-25 12:32
浏览 54
已采纳

添加页面旁边的前一个(后退)和下一个按钮编号PHP

I have two tiny little problems;

1 . I want to add a previous / next button into this code 2 . I want it to only show like max 10 links between previous and next. So if i have 50 numbers/links it will only show 10 of them and not 50 links on the page.

I have searched on the clo

The code works, only need that two options in it. Can someone help me out? Thank you !

 <?php 

        include 'includes/connection.php';  
        $per_page = 8;

        $pages_query = mysql_query("SELECT COUNT(`id`) FROM `products`");
        $pages = ceil(mysql_result($pages_query, 0) / $per_page);

        $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
        $start = ($page - 1) * $per_page;



        $query = mysql_query("SELECT `name` FROM `products` LIMIT $start, $per_page");
        while ($query_row = mysql_fetch_assoc($query)) {
            echo '<p>', $query_row['name'] ,'</p>';
        }

        if ($pages >= 1 && $page <= $pages) {
            for ($x=1; $x<=$pages; $x++) { 
                //echo $x, ' '; 

                echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : '<a href="?page='.$x.'">'.$x.'</a> ';
            }
        }else{
            header("location:index.php?page=1");
        }


    ?>
  • 写回答

2条回答 默认 最新

  • dongwei8440 2011-10-25 12:41
    关注

    First of all, you should, just for good practice, put an "exit;" after the header() call at the end. It doesn't make a difference in this particular script, but keep in mind that any code following a header("Location: ...") call WILL be executed before redirection.

    Now to your question, try this (UPDATE: This code has been tested and works.)

    <?php 
    include 'includes/connection.php';  
    $per_page = 8;
    $pages_query = mysql_query("SELECT COUNT(`id`) FROM `products`");
    $pages = ceil(mysql_result($pages_query, 0) / $per_page);
    
    $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
    $start = ($page - 1) * $per_page;
    
    $query = mysql_query("SELECT `name` FROM `products` LIMIT $start, $per_page");
    while ($query_row = mysql_fetch_assoc($query))
    {
        echo '<p>' . $query_row['name'] . '</p>';
    }
    
    // If the requested page is less than 1 or more than the total number of pages
    // redirect to the first page
    if($pages < 1 || $page > $pages)
    {
        header('Location: ?page=1');
        // end execution of the rest of this script
        // it will restart execution after redirection
        exit;   
    }
    // If more than one page, show pagination links
    if($pages > 1)
    {
        $html = array();
        $html[] = '<strong>';
        // if you're on a page greater than 1, show a previous link
        $html[] = (($page > 1) ? '<a href="?page=' . ($page - 1) . '">Previous</a> ' : '');
        // First page link
        $pageFirst = '<a href="?page=1">1</a>';
        $html[] = (($page == 1) ? "</strong>{$pageFirst}<strong>" : $pageFirst);
    
        if ($pages > 6)
        {
            $start_cnt = min(max(1, $page - (6 - 1)), $pages - 6);
            $end_cnt = max(min($pages, $page + 4), 8);
    
            $html[] = ($start_cnt > 1) ? '...' : ' ';
    
            for ($i = $start_cnt + 1; $i < $end_cnt; $i++)
            {
                $html[] = ($i == $page) ? '</strong><a href="?page=' . $i . '">' . $i . '</a><strong>' : '<a href="?page=' . $i . '">' . $i . '</a>';
                if ($i < $end_cnt - 1)
                {
                    $html[] = ' ';
                }
            }
    
            $html []= ($end_cnt < $pages) ? '...' : ' ';
        }
        else
        {
            $html[] = ' ';
    
            for ($i = 2; $i < $pages; $i++)
            {
                $html[] = ($i == $page) ? '</strong><a href="?page=' . $i . '">' . $i . '</a><strong>' : '<a href="?page=' . $i . '">' . $i . '</a>';
                if ($i < $pages)
                {
                    $html[] = ' ';
                }
            }
        }
        // last page link
        $pageLast = '<a href="?page=' . $pages . '">' . $pages . '</a>';
        $html[] = (($page == $pages) ? "</strong>{$pageLast}<strong>" : $pageLast);
        // Show next page link if you're on a page less than the total number of pages
        $html[] = ($page < $pages) ? ' <a href="?page=' . ($page + 1) . '">Next</a>' : '';
        // If you're not on the last page, show a next link
        $html[] = '</strong>';
    }
    else
    {
         // show page number 1, no link.
        $html[] = '<strong>1</strong>';
    }
    echo implode('', $html);
    

    Also note that the final ?> is not required in PHP files that do not have HTML code following the PHP code, so I left it off.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用