مقاله خود را جستجو کنید

در این بخش میتوانید مقاله خود به صورت حرفه ای جستجو نماید.

صفحه بندی ( pagination ) مطالب با php

 تاریخ انتشار : 2 دسامبر 2014    دسته بندی : پی اچ پی
یکی از مواردی که دیر یا زود مورد نیاز برنامه نویسان وب خواهد بود، صفحه بندی مطالب و محتوای سایت یا برنامه کاربردی است که در اصطلاح به آن pagination هم می گویند (به معنی تقسیم نمایش محتوای مورد نظر در چند صفحه به جای نمایش آنها در یک صفحه)، ناگفته پیدا است که فواید و لزوم این کار در دسته بندی بهتر و ایجاد محیط کاربری (UI یا User Interface) حرفه ای تر است، البته به جهت پیچیده گی ظاهری این امکان، ممکن است در نگاه نخست طراحی صحیح آن کمی مبهم به نظر برسد، اما با کمی راهنمایی و تمرکز می توان راه حل مشکل را پیدا کرد، به هر صورت در این آموزش قصد داریم تا با هم این مشکل را یک بار برای همیشه حل کنیم!، لذا اگر شما هم علاقمند هستید تا برنامه هایتان را به این روش طراحی کنید، با ادامه مطلب همراه ما باشید.
<meta charset="utf-8"/>

<?php
		
		define('HOST','localhost');
		define('DATABASE','cms');
		define('USER','root');
		define('PASS','');
		
		$db = new PDO("mysql:host=".HOST.";dbname=".DATABASE, USER, PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
		$per_page = "3";
		$page = isset($_GET['page']) ? ((int) $_GET['page']) : 1;
		
		$start = ($page-1)*$per_page;
        $stmt = $db->query("select * from users order by id limit $start,$per_page");
        $fetchall = $stmt->fetchall();
			foreach($fetchall as $row){
			echo $row['name']."<br />";
			echo $row['email']."<br /><hr>";
		}
		
		
        $total = $db->query("SELECT * FROM users");
        $count = $total->rowCount();

        if($count - $per_page > 0){
            //تعداد صفحات
            $paged_total = ceil($count / $per_page);
            //صفحه آخر
            $paged_last = $paged_total;
            //صفحات مياني
            $paged_middle = $page + 4;
            //شروع صفحه بندي
            $paged_start = $paged_middle - 4;

            //ايجاد لينک صفحه نخست
            if($page > 1){
                //اگر صفحه درخواستي بزرگتر از 1 بود
                $paged_result = '<div class="paged-link"><a href="pagiation.php?page=1" title="صفحه نخست">نخست</a></div>'."\n";
            }
            //غير فعال کردن لينک صفحه نخست اگر صفحه درخواستي برابر 1 بود
            else{
                $paged_result = '<div class="paged-link-off">نخست</div>'."\n";
            }

            //ايجاد لينک صفحه قبلي
            if($page > 1){
                //محاسبه لينک صفحه قبلي
                $paged_perv = $page - 1;
                //ايجاد لينک صفحه قبلي
                $paged_result .= '<div class="paged-link"><a href="pagiation.php?page='.$paged_perv.'" title="صفحه قبلي">قبلي</a></div>'."\n";
            }
            //غير فعال کردن لينک صفحه قبلي اگر صفحه انتخابي برابر 1 بود
            else{
                $paged_result .= '<div class="paged-link-off">قبلي</div>'."\n";
            }

            //ايجاد لينک صفحات مياني، شروع از دو شماره قبل
            for ($i=$paged_start-2; $i<=$paged_middle; $i++){
                //ايجاد لينک در صورتي که صفر، منفي يا از آخرين صفحه بيشتر نباشد
                if ($i > 0 && $i <= $paged_last){
                    //در حالت انتخاب شده
                    if($i == $page){
                        $paged_result .= '<div class="paged-link-selected"><a href="pagiation.php?page='.$i.'" title="صفحه '.$i.'">'.$i.'</a></div>'."\n";
                    }
                    //در حالت عادي
                    else{
                        $paged_result .= '<div class="paged-link"><a href="pagiation.php?page='.$i.'" title="صفحه '.$i.'">'.$i.'</a></div>'."\n";
                    }
                }
            }

            //نمايش لينک صفحات بعدي
            if($page <= $paged_last - 1){
                //محاسبه لينک صفحه بعدي
                $paged_next = $page + 1;
                //ايجاد لينک صفحه بعدي
                $paged_result .= '<div class="paged-link"><a href="pagiation.php?page='.$paged_next.'" title="صفحه بعدي">بعدي</a></div>'."\n";
            }
            //غير فعال کردن لينک صفحه بعدي اگر صفحه انتخابي برابر صفحه آخر بود
            else{
                $paged_result .= '<div class="paged-link-off">بعدي</div>'."\n";
            }

            //لينک صفحه آخر
            if($page <= $paged_last - 1){
                $paged_result .= '<div class="paged-link"><a href="pagiation.php?page='.$paged_last.'" title="صفحه آخر">آخر</a></div>'."\n";
            }
            //غير فعال کردن لينک صفحه آخر اگر صفحه انتخابي برابر صفحه آخر بود
            else{
                $paged_result .= '<div class="paged-link-off">آخر</div>'."\n";
            }

            //اطلاعات صفحات
            $paged_result .= '<div class="paged-link-info">&raquo; صفحه: '.$page.' از '.$paged_total.'</div>'."\n";
            //خروجي
            echo $paged_result;
        }
        else{
            echo 'صفحه اي وجود ندارد!'."\n";
        }
?>
فایل Css :
.paged-link{
    display:inline-block;
    line-height:14px;
    float:right;
    margin:2px;
}
.paged-link a{
    display:inline-block;
    border:#06C 1px solid;
    padding:2px;
    text-decoration:none;
}
.paged-link a:hover{
    border:#900 1px solid;
}
.paged-link-selected{
    display:inline-block;
    line-height:14px;
    float:right;
    margin:2px;
}
.paged-link-selected a{
    display:inline-block;
    border:#900 1px solid;
    padding:2px;
    text-decoration:none;
}
.paged-link-selected a:hover{
    border:#900 1px solid;
}
.paged-link-off{
    display:inline-block;
    border:#06C 1px solid;
    padding:2px;
    color:#CCC;
    line-height:14px;
    float:right;
    margin:2px;
}
.paged-link-info{
    display:inline-block;
    float:left;
    padding:2px;
    color:#666;
    line-height:14px;
    margin:2px;
    font-size:11px;
}
  منبع : وبگو

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *