نمایش تعداد زیادی از رکوردهای اطلاعاتی در یک صفحه وب باعث طولانی و سنگین شدن آن می شود.راه حل ، نمایش صفحه به صفحه رکوردها(سطرها)  است. در این قسمت روش نمایش رکوردها به صورت صفحه به صفحه را به زبان PHP آموزش می دهیم.
برای نمایش صفحه به صفحه رکوردها، باید ابتدا گروهی از رکوردها را از بانک اطلاعاتی خوانده و نمایش دهیم و کاربر برای  دیدن ادامه رکوردها بتواند روی دکمه “صفحه بعد ” کلیک کند و در صفحات بعدی روی دکمه های “صفحه قبل”و “صفحه بعد” کلیک کرده و بتواند رکوردهای قبلی یا بعدی را مشاهده کند. یا اینکه برای هر صفحه یک لینک با شماره صفحه نشان دهیم تا کاربر بتواند روی شماره مورد نظرش کلیک کند.

خواندن محدوده ای از رکوردها

برای نمایش صفحه به صفحه رکوردها باید دستوری برای خواندن محدوده دلخواه از رکوردهای جدول اجرا کنیم. ما در اینجا از بانک اطلاعاتی MySQL استفاده می کنیم. و دستور خواندن SELECT را به زبان SQL اجرا می کنیم. دستور SELECT دارای یک بخش LIMIT است که تعیین می کند رکوردهای نتیجه بازیابی را از چه ردیفی و به چه تعداد برگرداند. بعنوان مثال برای خواندن ۲۰ سطر اول از جدول studs ، دستور SQL زیر را اجرا می کنیم:

SELECT * FROM studs LIMIT 0 , 20

و یا برای خواندن ۲۰ سطر با شروع از سطر پنجاهم اجرا می کنیم :

SELECT * FROM studs LIMIT 50,20

حال برای نمایش صفحه به صفحه رکوردها باید شماره رکورد شروع را بر اساس شماره صفحه تعیین کنیم. می توانیم دستورات زیر را بنویسیم تا رکورد شروع تعیین شود:

$start =($page-1) * $max

که $page شماره صفحه و $max حداکثر تعداد سطرها در هر صفحه است.

دستورات زیر ابتدا شماره صفحه را با روش GET بدست آورده و سپس دستوری اجرا می کند تا رکوردهایی برای نمایش در آن صفحه از جدول بانک اطلاعاتی بخواند.

$page=$_GET['page'];
$start = ($page-1)*$max ;
$res=mysqli_query($conn , "SELECT * FROM studs LIMIT $start , $max");

نمایش لینک به صفحات مختلف

در این مثال برای هر صفحه یک لینک نشان خواهیم داد تا کاربر بتواند روی ان کلیک کند بصورت زیر:

<a href="listpages.php?page=1"> صفحه اول </a>
<a href="listpages.php?page=2"> صفحه دوم</a>

که فایل listpages.php برای نمایش لیست رکوردها استفاده شده است.
قطعه کد زیر برای نمایش لینک ها به صفحات با فرض اینکه تعداد صفحات در متغیر $numpages قرار داشته باشد نوشته شده است.

<p align="center">
<?php for($i=1 ; $i<=$numpages ; $i++): ?> &
nbsp;<a href="listpages.php?page=<?php echo $i ?>"> <?php echo $i; ?> </a>&nbsp;
<?php endfor; ?> </p>

نمونه برنامه صفحه بندی رکوردها

حالا برنامه کامل را ببینید که بر اساس تعداد صفحات مورد نیاز لینک صفحات را نشان داده و در ادامه هم لیست رکوردهای آن صفحه را نشان می دهد. دستوراتی هم برای نمایش لیست رکوردهای صفحه درخواستی دارد.

<html>
<body>
<?php
$max=10;
if (isset($_GET['page']))
    $page = $_GET['page'];
else $page=1;
$start = ($page-1)*$max ;
$conn = mysqli_connect("localhost","root","");
mysqli_select_db( $conn , "amoozesh");
mysqli_query($conn , "SET NAMES utf8");
$res= mysqli_query( $conn,"select count(*) as cnt from studs" );
$row=mysqli_fetch_assoc($res);
$numrows=$row['cnt'];
$numpages = $numrows/$max;
?>
<p align="center">
    <?php
    for($i=1 ; $i<=$numpages ; $i++): ?>
        &nbsp;<a href="listpages.php?page=<?php echo $i ?>"> <?php echo $i; ?> </a>&nbsp;
    <?php endfor; ?>
</p>
<table border="1" align="center" width="500">
    <tr>
        <th> id </th> <th> name </th>
    </tr>
    <?php
    $res= mysqli_query( $conn,"select * from studs limit $start , $max " );
    while ( $row=mysqli_fetch_assoc($res) ):
        ?>
        <tr>
            <td> <?php echo $row['sid']; ?> </td>
            <td> <?php echo $row['name']; ?> </th>
        </tr>
    <?php  endwhile; ?>
</table>
?>
</body>
</html>

در این نمونه برنامه، تعداد سطرها در هر صفحه در متغیر $max قرارداده شده و شماره صفحه با روش GET از ورودی خوانده شده و داخل متغیر $page قرار می گیرد. شماره رکورد شروع محاسبه شده و داخل متغیر $start نوشته می شود.

به بانک اطلاعاتی amoozesh متصل شده و ابتدا تعداد کل رکوردها بدست آمده و در متغیر $numrows قرار میگیرد. سپس تعداد صفحات با تقسیم تعداد رکوردها بر تعداد رکورد در هر صفحه بدست می آید و در متغیر $numpages قرارداده می شود.

با کمک حلقه تکرار for ، لینک هایی برای صفحات مختلف چاپ می شود و در ادامه رکوردهای صفحه درخواستی از بانک خوانده شده و در یک جدول چاپ می شود. خروجی برنامه بصورت زیر خواهد بود :

نمایش صفحه به صفحه رکوردها

توجه داشته باشید قبل از اجرای نمونه برنامه فوق باید یانک اطلاعاتی amoozesh با جدول دانشجویان را داشته باشید و تعداد رکوردهای جدول هم بیشتر از ۱۰ تا رکورد باشد.

نمایش قابل چاپ