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

PHP

توسط phpking در 4 سال پیش
0 1.9k 2 4 سال پیش
phpkingscarface
0

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

بنده هم هیچ نقشی در این کار نداشته ام به جز فارسی نوشتنش. تبریک به خودم.

نتیجه ی کار به این صورت خواهد بود:

بخش اول: کد نویسی

<?php
    
    include('config.php');    // فایل حاوی تنظیمات اتصال به پایگاه داده

    $tbl_name='tableName';        //نام جدول پایگاه داده
    
    
    $adjacents = 3; //تعداد صفحاتی که بعد از شماره ی صفحه نمایش می دهد
    
    $query = 'SELECT COUNT(*) as `num` FROM $tbl_name'; // کوئری دریافت تعداد صفحات قابل نمایش 
    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages['num'];
    
    $targetpage = 'pageName';     //اسم این فایل که کدها را در آن قرار می دهید
    
    $limit = 5;                                 //تعداد پست هایی که در هر صفحه نشان داده می شود
    $page = $_GET['page'];
    if($page) 
        $start = ($page - 1) * $limit;             //اولین گزینه گزینه ای که در صفحه نمایش داده می شود
    else
        $start = 0;                                
    
    /* دریافت اطلاعات 
    column_name نام ستون یا ستونهایی می باشد که از جدول می خوانید
    */
    $sql = 'SELECT column_name FROM $tbl_name LIMIT $start, $limit';
    $result = mysql_query($sql);
    
    if ($page == 0) $page = 1;
    $prev = $page - 1;
    $next = $page + 1;
    $lastpage = ceil($total_pages/$limit);
    $lpm1 = $lastpage - 1;
    
    $pagination = '';
    if($lastpage > 1)
    {    
        $pagination .= '<div class=\'pagination\'>';
        //کلید قبلی
        if ($page > 1) 
            $pagination.= '<a href=\'$targetpage?page=$prev\'>« previous</a>';
        else
            $pagination.= '<span class=\'disabled\'>« previous</span>';    
        
        //صفحات    
        if ($lastpage < 7 + ($adjacents * 2))    
        {    
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= '<span class=\'current\'>$counter</span>';
                else
                    $pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';                    
            }
        }
        elseif($lastpage > 5 + ($adjacents * 2))    
        {
            
            if($page < 1 + ($adjacents * 2))        
            {
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= '<span class=\'current\'>$counter</span>';
                    else
                        $pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';                    
                }
                $pagination.= '...';
                $pagination.= '<a href=\'$targetpage?page=$lpm1\'>$lpm1</a>';
                $pagination.= '<a href=\'$targetpage?page=$lastpage\'>$lastpage</a>';        
            }
            
            elseif($lastpage - ($adjacents * 2) > $page &amp;amp;&amp;amp; $page > ($adjacents * 2))
            {
                $pagination.= '<a href=\'$targetpage?page=1\'>1</a>';
                $pagination.= '<a href=\'$targetpage?page=2\'>2</a>';
                $pagination.= '...';
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= '<span class=\'current\'>$counter</span>';
                    else
                        $pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';                    
                }
                $pagination.= '...';
                $pagination.= '<a href=\'$targetpage?page=$lpm1\'>$lpm1</a>';
                $pagination.= '<a href=\'$targetpage?page=$lastpage\'>$lastpage</a>';        
            }
            
            else
            {
                $pagination.= '<a href=\'$targetpage?page=1\'>1</a>';
                $pagination.= '<a href=\'$targetpage?page=2\'>2</a>';
                $pagination.= '...';
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= '<span class=\'current\'>$counter</span>';
                    else
                        $pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';                    
                }
            }
        }
        
        //کلید بعدی
        if ($page < $counter - 1) 
            $pagination.= '<a href=\'$targetpage?page=$next\'>next »</a>';
        else
            $pagination.= '<span class=\'disabled\'>next »</span>';
        $pagination.= '</div>\n';        
    }
?>

    <?php
        while($row = mysql_fetch_assoc($result))
        {

            /* 
            کدهای تکرار شما
            برای مثال:
            
            echo $row['name'].'<br>';
            
            */
        
        }
    ?>

<?php echo $pagination; ?>

توضیحات کامل رو به صورت کامنت توی کدها گذاشتم. فقط یه نکته هم این که شما می تونید استایل این صفحه بندی رو تغییر بدید. برای نمونه این استایل رو می تونید در فایل css خودتون قرار بدید:

div.pagination {
padding: 3px;
margin: 3px;
}
div.pagination a {
padding: 2px 5px 2px 5px;
margin: 2px;
border: 1px solid #AAAADD;
text-decoration: none; /* no underline */
color: #000099;
}
div.pagination a:hover, div.pagination a:active {
border: 1px solid #000099;
color: #000;
}
div.pagination span.current {
padding: 2px 5px 2px 5px;
margin: 2px;
border: 1px solid #000099;
font-weight: bold;
background-color: #000099;
color: #FFF;
}
div.pagination span.disabled {
padding: 2px 5px 2px 5px;
margin: 2px;
border: 1px solid #EEE;
color: #DDD;
}

امیدوارم به دردتون خورده باشه.http://minerva-se.com/

0

[align=center][/align]

و اکنون غزلی در باره کپی پیست: کپی پیست مچکرم! کپی پیست من بی تو هیچم! کپی پیست همیشه کنارم بمون.

0

عجب غزلی!:smile40: آقا کل زندگی ما کپی پیسته اینم روش :whistle:

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید