Php 如何在分页项目中实现最后的步骤?

Php 如何在分页项目中实现最后的步骤?,php,css,pagination,Php,Css,Pagination,我正在对我的站点进行第一次分页实现。我觉得我很接近,只是混淆了我的逻辑,或者误解了一些变量的位置或实际值 代码如下: $pgsize_wave = 40; $pg_wave = (is_numeric($_GET["p"]) ? $_GET["p"] : 1); $start = ($pg_wave-1)*$pgsize_wave; $w

我正在对我的站点进行第一次分页实现。我觉得我很接近,只是混淆了我的逻辑,或者误解了一些变量的位置或实际值

代码如下:

                    $pgsize_wave = 40;
                    $pg_wave = (is_numeric($_GET["p"]) ? $_GET["p"] : 1);
                    $start = ($pg_wave-1)*$pgsize_wave;
                    $waves = mysql_query("SELECT * FROM `CysticAirwaves` LIMIT $start, $pgsize_wave");
                    $waves_total = mysql_query("SELECT COUNT(1) FROM `CysticAirwaves`");
                    $waves_total = mysql_fetch_row($waves_total);
                    $waves_total = $waves_total[0];
                    $max_pages = $waves_total / $pgsize_wave;
                    $max_pages = ceil($waves_total/$pgsize_waves);


                    ?>



                    <div id="all_page_turn">
                             <ul>

                                <?php if($waves_total > 40 && $pg_wave >= 40) { ?>
                                 <li class="PreviousPageBlog round_10px">
                                     <a href="Airwave_build.php?id=<?php echo $pg_wave - 40); ?>">Previous Page</a>
                                 </li>
                                 <?php } ?>

                                 <?php if($waves_total > 40 && $pg_wave < ($waves_total-40)) { ?>
                                 <li class="NextPageBlog round_10px">
                                     <a href="Airwave_build.php?id=<?php echo ($pg_wave + 40); ?>">Next Page</a>
                                 </li>
                                 <?php } ?>

                             </ul>
                        </div>
非常感谢

这是伪代码,但希望能解释逻辑

$total        = SELECT COUNT(*) FROM `waves`
$currentPage  = 1  // changes through page parameter in URL
$wavesPerPage = 40
$totalPages   = ceil($total / $wavesPerPage)
$offset       = ($wavesPerPage * ($currentPage - 1)) + 1

$waves = mysql_query("SELECT * FROM `waves` LIMIT $offset, $wavesPerPage");

while ($row = mysql_fetch_assoc($waves)) {
    echo $row['wave']
    …
}
要输出分页链接,请执行以下操作:

if ($totalPages > 1) {
    if ($currentPage > 1) {
        printf('<a href="waves.php?page=%u">Previous</a>', $currentPage - 1);
    }

    for ($i = 1; $i <= $totalPages; $i++) {
        $class = ($i == $currentPage) ? 'selected' : null;
        printf('<a href="waves.php?page=%1$u" class="%2$s">Page %1$u</a>', $i, $class);
    }

    if ($currentPage < $totalPages) {
        printf('<a href="waves.php?page=%u">Next</a>', $currentPage + 1);
    }
}
if($totalPages>1){
如果($currentPage>1){
printf(“”,$currentPage-1);
}

对于($i=1;$i你应该解释问题是什么…@Krtek-问题是我无法将它迁移到哪里?我理解逻辑。问题在于代码本身。所以伪代码对我没有多大好处。我不想让你帮我做这件事,也许只是纠正我所拥有的,或者指出我所拥有的有什么问题。那么,什么样的例子问题到底出在哪里?对于这样一个模糊的错误描述,如果不能自己运行代码(因为我没有你的数据库),很难给出任何具体的建议。在我看来,对于初学者来说,您的偏移量计算似乎已关闭。我建议您删除脚本,实现上面的代码,以获得一个可用的最小示例,然后从那里重新构建。或者尝试一步一步地调试。我想我已经非常接近了。我是根据您的建议重新开始的,但仍然没有做到这一点。不仅如此,我还没有做到这一点页面底部的下一个链接有大量的“page$i”链接。这是最新的代码块。再次感谢您与我一起处理此问题。我想将此标记为正确答案。好的,这对您来说显然有点太假了。请将其充实一点。您发布的代码中的问题显然是您没有循环使用
$result
资源。此外,您还使用了n的分页链接太过字面。
if ($totalPages > 1) {
    if ($currentPage > 1) {
        printf('<a href="waves.php?page=%u">Previous</a>', $currentPage - 1);
    }

    for ($i = 1; $i <= $totalPages; $i++) {
        $class = ($i == $currentPage) ? 'selected' : null;
        printf('<a href="waves.php?page=%1$u" class="%2$s">Page %1$u</a>', $i, $class);
    }

    if ($currentPage < $totalPages) {
        printf('<a href="waves.php?page=%u">Next</a>', $currentPage + 1);
    }
}