在分页上获得记录位置

时间:2014-07-05 09:39:36

标签: php pagination

    $per_page = 3;
    $page_query = mysql_query("SELECT COUNT(*) FROM penjualan");
    $pages = ceil(mysql_result($page_query, 0) / $per_page);
    $page = (isset($_GET['pagenum'])) ? (int)$_GET['pagenum'] : $pages;
    $start = ($page - 1) * $per_page;

    $query = mysql_query("SELECT * FROM penjualan ORDER BY nonota ASC LIMIT $start, $per_page");
    while($r=mysql_fetch_array($query)){
    echo "
       <tr>
         <td><a href='?page=penjualan&nota=$r[nonota]'>$r[nonota]</a></td>
         <td>$r[tanggal]</td>
         <td>$r[total]</td>
         <td><a href='?page=penjualan&nota=$r[nonota]'>Cetak Nota</a></td>
       </tr>";
    }
    if($pages >= 1 && $page <= $pages){
    for($halaman=1; $halaman<=$pages; $halaman++){
       echo ($halaman == $page) ? '<a class="halaman-aktif">'.$halaman. '</a>' : '<a href="?page=penjualan&pagenum='.$halaman.'"> '.$halaman.'</a>';                                  }
    }

您好 我有一个....数据列表...每页显示3个LIMIT子句。
我希望当我去这个地址?page=penjualan&nota=5时,分页在第2页 其他示例当我进入此地址page=penjualan&nota=8时,分页在第3页上。
因为项目$per_page仅为3 ..
请帮助我..非常感谢

1 个答案:

答案 0 :(得分:0)

...
$pages = ceil(mysql_result($page_query, 0) / $per_page);
if (isset($_GET['nota'])) {
    $page = intval(((int) $_GET['nota'] - 1) / $per_page) + 1;
} else {
    $page = isset($_GET['pagenum']) ? (int) $_GET['pagenum'] : $pages;
}
$start = ($page - 1) * $per_page;
...

NOTE1 :仅当 db 中的字段nonota连续所有数字时才有效(如果删除任何行,则需要重新计算所有更高的数字)向下)。

NOTE2 mysql_*函数已弃用。是时候将代码重构为mysqli_* PDO ,特别注意防范SQL injection攻击的预防语句。