کی بهتر از خود مدرس میتونه بهت مشاوره بده؟🤔 ۳۵٪ تخفیف + یک جلسه رایگان با خود مدرس🔥
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ دیدگاه نظر نازنین گودرزی
آموزش صفحه بندی با PHP : آموزش Pagination مطالب با پی اچ پی
آموزش صفحه بندی با PHP : آموزش Pagination مطالب با پی اچ پی

صفحه بندی مطالب در PHP، یکی از مهارت‌های مورد نیاز برای برنامه نویسان وب است. ممکن است که ما هنگام خواندن اطلاعات از پایگاه داده، میلیون‌ها رکورد را در یک صفحه دریافت کنیم. این کار ممکن است زمان زیادی را صرف کند و منجر به سردرگمی کاربران شود. برای مثال، بارگیری 1000 تصویر در یک صفحه، بسیار بیشتر از بارگیری 50 تصویر در همان صفحه به طول می‌انجامد. بنابراین، این رکوردها را جهت خوانایی و فهم بهتر با توجه به نیاز کاربر به چند صفحه تقسیم می‌کنیم که به آن صفحه بندی یا Pagination گفته می‌شود. علاوه بر این، صفحه بندی باعث بهبود تجربه‌ی‌ کاربری می‌شود. در ادامه با آموزش ساخت صفحه بندی مطالب در php ، با ما همراه باشید.

پیاده سازی صفحه بندی با PHP و MySQL

برای پیاده سازی صفحه بندی، به یک مجموعه داده‌ی بزرگ نیاز داریم تا صفحه بندی را روی آن اعمال کنیم. بنابراین، ابتدا باید یک پایگاه داده و جدول ایجاد کنیم. پس از آن، رکوردهای موجود در جدول را ارائه کرده و برای ایجاد صفحه بندی شروع به کدنویسی می‌کنیم. به طوری که داده‌های واکشی شده از پایگاه داده بتوانند در چندین صفحه تقسیم شوند.

در اینجا ما دو نمونه از صفحه بندی را معرفی خواهیم کرد. مثال اول یک مثال ساده و اساسی از ایجاد صفحه بندی بدون CSS است، در حالی که در مثال دوم، ما صفحه بندی را به روشی جذاب با استفاده از CSS و bootstrap ایجاد خواهیم کرد. می‌توانید خروجی هر دو را ببینید. در زیر مراحل ایجاد صفحه بندی آورده شده است.

مراحل ایجاد صفحه بندی

یک پایگاه داده و جدول ایجاد کنید. لیستی از رکوردها را در جدول ثبت کنید.

با پایگاه داده‌ی MySQL ارتباط برقرار کنید.

لینک صفحه بندی را برای تقسیم داده‌ها در چندین صفحه ایجاد کرده و آن‌ها را به انتهای جدول اضافه کنید.

داده‌ها را از پایگاه داده دریافت کرده و در صفحات مختلف نمایش دهید.

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

مثال 1 - صفحه بندی مطالب در PHP و MySql 

کد زیر یک مثال ساده از صفحه بندی است که در PHP با کمک پایگاه داده‌ی MySQL انجام می‌شود. این کد، داده‌های واکشی شده از پایگاه داده را در چندین صفحه تقسیم می‌کند. در این مثال صفحه بندی، حروف الفبا در چندین صفحه نمایش داده می‌شوند.

ایجاد پایگاه داده

ابتدا، یک پایگاه داده با نام pagination ایجاد کرده و یک جدول در داخل آن به نام alphabet ایجاد کنید. به صورت زیر رکوردها را ایجاد کنید:

آموزش ساخت صفحه بندی مطالب در php

اتصال به پایگاه داده

اتصال فایل PHP به پایگاه داده یک کار ضروری است. بنابراین می‌توانید داده‌های ذخیره شده در پایگاه داده را در صفحه‌ی وب نمایش دهید.

کد اتصال پایگاه داده:

$conn = mysqli_connect('localhost', 'root', '');  
if (! $conn) {  
         die("Connection failed" . mysqli_connect_error());  
}  
else {  
         mysqli_select_db($conn, 'pagination');  
}

دریافت شماره‌ی صفحه‌ی فعلی

کد زیر شماره‌ی صفحه‌ای که کاربر در حال بازدید از آن است را تعیین می‌کند. در صورت عدم وجود، به طور پیش فرض شماره‌ی صفحه را روی 1 تنظیم می‌کند.

if (!isset ($_GET['page']) ) {  
    $page = 1;  
} else {  
    $page = $_GET['page'];  
}  

فرمول صفحه بندی

برای صفحه بندی باید حد تعداد رکوردهای نمایش داده شده در هر صفحه را تنظیم کنید. در اینجا، ما حد نتیجه را برای هر صفحه 10 قرار داده‌ایم، بنابراین نتایج در هر صفحه به شرح زیر نمایش داده می‌شود:

صفحه‌ی 1 - A تا J: از 1 تا 10

صفحه‌ی 2 - K تا T: از 11 تا 20

صفحه‌ی 3 - U تا Z: از 21 تا 26

$results_per_page = 10;  
$page_first_result = ($page-1) * $results_per_page;  

دریافت تعداد کل صفحات

$query = "select *from alphabet";  
$result = mysqli_query($conn, $query);  
$number_of_result = mysqli_num_rows($result);  
//determine the total number of pages available  
$number_of_page = ceil ($number_of_result / $results_per_page); 

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

کد زیر برای بازیابی داده‌ها از پایگاه داده و نمایش در صفحات وب به همین ترتیب که تقسیم شده‌اند، استفاده می‌شود.

$query = "SELECT *FROM alphabet LIMIT " . $page_first_result . ',' . $results_per_page;  
    $result = mysqli_query($conn, $query);  
    //display the retrieved result on the webpage  
    while ($row = mysqli_fetch_array($result)) {  
        echo $row['id'] . ' ' . $row['alphabet'] . '</br>';  
            }  

نمایش پیوند صفحات در URL 

استفاده از این کد URL صفحه‌ی وب برای هر صفحه متغیر است.
for($page = 1; $page<= $number_of_page; $page++) {  
    echo '<a href = "index2.php?page=' . $page . '">' . $page . ' </a>';

کد نهایی

اکنون، همه‌ی کدها را با هم در یک فایل واحد قرار دهید تا صفحه بندی انجام شود.

<html>  
<head>  
<title> Pagination </title>  
</head>  
<body>  
<?php  
    //database connection  
    $conn = mysqli_connect('localhost', 'root', '');  
    if (! $conn) {  
die("Connection failed" . mysqli_connect_error());  
    }  
    else {  
mysqli_select_db($conn, 'pagination');  
    }  
    //define total number of results you want per page  
    $results_per_page = 10;  
    //find the total number of results stored in the database  
    $query = "select *from alphabet";  
    $result = mysqli_query($conn, $query);  
    $number_of_result = mysqli_num_rows($result);  
    //determine the total number of pages available  
    $number_of_page = ceil ($number_of_result / $results_per_page);  
    //determine which page number visitor is currently on  
    if (!isset ($_GET['page']) ) {  
        $page = 1;  
    } else {  
        $page = $_GET['page'];  
    }  
    //determine the sql LIMIT starting number for the results on the displaying page  
    $page_first_result = ($page-1) * $results_per_page;  
    //retrieve the selected results from database   
    $query = "SELECT *FROM alphabet LIMIT " . $page_first_result . ',' . $results_per_page;  
    $result = mysqli_query($conn, $query);  
    //display the retrieved result on the webpage  
    while ($row = mysqli_fetch_array($result)) {  
        echo $row['id'] . ' ' . $row['alphabet'] . '</br>';  
    }  
    //display the link of the pages in URL  
    for($page = 1; $page<= $number_of_page; $page++) {  
        echo '<a href = "index2.php?page=' . $page . '">' . $page . ' </a>';  
    }  
?>  
</body>  
</html> 

نتیجه‌ی کد بالا به صورت زیر می‌باشد:

آموزش ساخت صفحه بندی مطالب در php

مثال 2 - صفحه بندی مطالب در PHP و MySql 

مثال زیر نمونه‌ی دیگری از صفحه بندی است که در آن از CSS به همراه HTML، برای جذابیت بیشتر ویوی صفحه‌ی وب استفاده کرده‌ایم. CSS باعث خلاقیت و جذابیت بیشتر صفحه‌ی وب می‌شود. از طرف دیگر، MySQL داده‌ها را در پایگاه داده ذخیره می‌کند. بنابراین، می‌توانید صفحه بندی را خیلی بهتر یاد بگیرید.

ابتدا دو فایل connection.php (برای اتصال به پایگاه داده) و index1.php (برای ایجاد صفحه بندی) را ایجاد می‌کنیم.

کد زیر را درون فایل connection.php قرار دهید.

<?php  
$conn = mysqli_connect('localhost', 'root', '');  
    if (! $conn) {  
die("Connection failed" . mysqli_connect_error());  
}  
    else {  
mysqli_select_db($conn, 'pagination');  
}  
?>  

سپس کد زیر را درون فایل index1.php قرار دهید.

<html>   
  <head>   
    <title>Pagination</title>   
    <link rel="stylesheet"  
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">   
    <style>   
    table {  
        border-collapse: collapse;  
    }  
        .inline{   
            display: inline-block;   
            float: right;   
            margin: 20px 0px;   
        }   
        input, button{   
            height: 34px;   
        }   
    .pagination {   
        display: inline-block;   
    }   
    .pagination a {   
        font-weight:bold;   
        font-size:18px;   
        color: black;   
        float: left;   
        padding: 8px 16px;   
        text-decoration: none;   
        border:1px solid black;   
    }   
    .pagination a.active {   
            background-color: pink;   
    }   
    .pagination a:hover:not(.active) {   
        background-color: skyblue;   
    }   
        </style>   
  </head>   
  <body>   
  <center>  
    <?php  
    // Import the file where we defined the connection to Database.     
        require_once "connection.php";   
        $per_page_record = 4;  // Number of entries to show in a page.   
        // Look for a GET variable page if not found default is 1.        
        if (isset($_GET["page"])) {    
            $page  = $_GET["page"];    
        }    
        else {    
          $page=1;    
        }    
        $start_from = ($page-1) * $per_page_record;     
        $query = "SELECT * FROM student LIMIT $start_from, $per_page_record";     
        $rs_result = mysqli_query ($conn, $query);    
    ?>    
    <div class="container">   
      <br>   
      <div>   
        <h1>Pagination Simple Example</h1>   
        <p>This page demonstrates the basic    
           Pagination using PHP and MySQL.   
        </p>   
        <table class="table table-striped table-condensed    
                                          table-bordered">   
          <thead>   
            <tr>   
              <th width="10%">ID</th>   
              <th>Name</th>   
              <th>College</th>   
              <th>Score</th>   
            </tr>   
          </thead>   
          <tbody>   
    <?php     
            while ($row = mysqli_fetch_array($rs_result)) {    
                  // Display each field of the records.    
            ?>     
            <tr>     
             <td><?php echo $row["Rank"]; ?></td>     
            <td><?php echo $row["Name"]; ?></td>   
            <td><?php echo $row["College"]; ?></td>   
            <td><?php echo $row["Score"]; ?></td>                                           
            </tr>     
            <?php     
                };    
            ?>     
          </tbody>   
        </table>   
     <div class="pagination">    
      <?php  
        $query = "SELECT COUNT(*) FROM student";     
        $rs_result = mysqli_query($conn, $query);     
        $row = mysqli_fetch_row($rs_result);     
        $total_records = $row[0];     
    echo "</br>";     
        // Number of pages required.   
        $total_pages = ceil($total_records / $per_page_record);     
        $pagLink = "";       
        if($page>=2){   
            echo "<a href='index1.php?page=".($page-1)."'>  Prev </a>";   
        }       
        for ($i=1; $i<=$total_pages; $i++) {   
          if ($i == $page) {   
              $pagLink .= "<a class = 'active' href='index1.php?page="  
                                                .$i."'>".$i." </a>";   
          }               
          else  {   
              $pagLink .= "<a href='index1.php?page=".$i."'>   
                                                ".$i." </a>";     
          }   
        };     
        echo $pagLink;   
        if($page<$total_pages){   
            echo "<a href='index1.php?page=".($page+1)."'>  Next </a>";   
        }   
      ?>    
      </div>  
      <div class="inline">   
      <input id="page" type="number" min="1" max="<?php echo $total_pages?>"   
      placeholder="<?php echo $page."/".$total_pages; ?>" required>   
      <button onClick="go2Page();">Go</button>   
     </div>    
    </div>   
  </div>  
</center>   
  <script>   
    function go2Page()   
    {   
        var page = document.getElementById("page").value;   
        page = ((page><?php echo $total_pages; ?>)?<?php echo $total_pages; ?>:((page<1)?1:page));   
        window.location.href = 'index1.php?page='+page;   
    }   
  </script>  
  </body>   
</html>

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

برای کسب اطلاعات بیشتر می‌توانید به وب سایت رسمی PHP مراجعه کنید.

جمع‌بندی:

صفحه بندی مطالب در PHP، به شما کمک می‌کند تا مطالب فراوان بخش وبلاگ، محصولات یا حتی صفحه‌ی جستجوی داخلی وب سایت خود را در چندین صفحه، نمایش دهید تا زمان بارگذاری صفحه‌ی خود را کاهش داده و از سر در گم شدن کاربران جلوگیری کنید. صفحه بندی به بهبود تجربه‌ی کاربری شما نیز کمک می‌کند. شما می‌توانید از کدهای این مقاله برای صفحه بندی صفحات وب سایت خود استفاده کنید.

امیدواریم که  مقاله آموزش ساخت صفحه بندی مطالب در php برای شما مفید باشد. شما می‌توانید سوالات خود را در بخش نظرات با ما به اشتراک بگذارید.

اگر به یادگیری بیشتر در زمینه‌ی PHP علاقه داری، با شرکت در دوره‌ی آموزشی متخصص PHP در کمتر از یک سال به یک متخصص PHP تبدیل می‌شوی که آماده‌ی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.

۶ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
تایماز مصطفایی ۰۷ اردیبهشت ۱۴۰۰، ۱۸:۲۰

سلام خیلی خوب بود ولی ای کاش از PDO استفاده کنید چون دیگه mysqli تقریبا منسوخ شده

نازنین کریمی مقدم ۰۸ اردیبهشت ۱۴۰۰، ۱۰:۰۵

سلام. حق با شماست استفاده از mysql خیلی کمتر شده، اما هنوز طرفداران خودشو داره و براساس تعداد درخواست مقاله رو تهیه کردیم. انشالله در آینده این موضوع رو هم پوشش میدیم.

۰۱ فروردین ۱۴۰۲، ۲۲:۱۲

کی گفته mysqli منسوخ شده برادر MySqli بهترین و پر استفاده‌ترین دیتابیس دنیا هستش همین طور تمامی دستور‌ها و توابع مربوط به اون

ساناز حسینی ۰۳ اسفند ۱۳۹۹، ۱۸:۰۹

سلام توو دوره آموزش متخصص php اگر امکانش هست ساخت سایت فروشگاهی رو هم بذارین سپاس

نازنین گودرزی ۰۳ اسفند ۱۳۹۹، ۱۸:۳۰

سلام وقت بخیر. این موضوع در سرفصل‌ها نیست و پروژه‌ها و مینی پروژه‌های دیگری انجام میشه.

اصغر ۰۳ دی ۱۳۹۹، ۰۸:۱۶

مطالب خوبی بود بیشتر برای جدولهایی که تعداد رکورد محدودی دارن کاربردی هستش وقتی تعداد رکورد میلیونی میشه عملا جواب نمیده یعنی کوئری اولی که تعداد رکوردها رو میگیره بعد از روی اون کوئری دوم رو میسازی که این خودش کلی پردازش و زمان میبره حالا حساب کنین بخوایین جستجویی هم روش اعمال کنین با دستور like

  • پیاده سازی صفحه بندی با PHP و MySQL
  • مراحل ایجاد صفحه بندی
  • مثال 1 - صفحه بندی مطالب در PHP و MySql 
  • مثال 2 - صفحه بندی مطالب در PHP و MySql 
اشتراک گذاری مقاله در :