انجمن‌های فارس وب

نسخه کامل: صفحه بندی اطلاعات استخراج شده از بانك اطلاعاتي در PHP
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
سلام
سوالی داشتم زاجبه صفحه بندی در سایت

فرض کنید قرار 1000 رکورد از دیتابیس بخونیم و در صفحه نمایش بدیم و در هر صفحه 10 رکورد رو نمایش میدیم ، در این صورت ما 10 صفحه داریم

میخوام طوری این کارو انجام بدم که یک جا واسم کل صفحات رو نمایش نده ( یعنی 100 صفحه یه جا نمایش داده نشه )

مثلاً : 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | . . . . | 100

حالا وقتی مثلاً وقتی صفحه 10 رو زدیم از 11 شروع بشه تا 21 ( یعنی 10 صفحه 10 صفحه بره بالا )


من یک کلاس هم از PHPCLASS.org دانلود کردم اگر میشه لطفاً جواب سوال اول و بعد طرز استفاده از این کلاس رو بگید

class pagination {

    var 
$fullresult;    // record set that contains whole result from database
    
var $totalresult;   // Total number records in database
    
var $query;         // User passed query
    
var $resultPerPage//Total records in each pages
    
var $resultpage;    // Record set from each page
    
var $pages;            // Total number of pages required
    
var $openPage;        // currently opened page
    
private $con;
    private 
$user;
    private 
$pass;
    private 
$host;
    private 
$dbname;        
    
/*
@param - User query
@param - Total number of result per page
*/
    
function connect()
    {
        
$this->host "localhost";
        
$this->user "root";
        
$this->pass "";
        
$this->dbname "search";
        
$this->con = @mysql_connect($this->host,$this->user,$this->pass) or die("user & pass not valid");
        
mysql_select_db($this->dbname,$this->con) or die("Can Not Select Database");
        
    }
    
    function 
createPaging($query,$resultPerPage
    {
        
$this->query        =    $query;
        
$this->resultPerPage=    $resultPerPage;
        
$this->fullresult    =    mysql_query($this->query);
        
$this->totalresult    =    mysql_num_rows($this->fullresult);
        
$this->pages        =    $this->findPages($this->totalresult,$this->resultPerPage);
        if(isset(
$_GET['page']) && $_GET['page']>0) {
            
$this->openPage    =    $_GET['page'];
            if(
$this->openPage $this->pages) {
                
$this->openPage    =    1;
            }
            
$start    =    $this->openPage*$this->resultPerPage-$this->resultPerPage;
            
$end    =    $this->resultPerPage;
            
$this->query.=    " LIMIT $start,$end";
        }
        elseif(@
$_GET['page']>$this->pages) {
            
$start    =    $this->pages;
            
$end    =    $this->resultPerPage;
            
$this->query.=    " LIMIT $start,$end";
        }
        else {
            
$this->openPage    =    1;
            
$this->query .=    " LIMIT 0,$this->resultPerPage";
        }
        
$this->resultpage =    mysql_query($this->query);
    }
/*
function to calculate the total number of pages required
@param - Total number of records available
@param - Result per page
*/
    
function findPages($total,$perpage
    {
        
$pages    =    intval($total/$perpage);
        if(
$total%$perpage 0$pages++;
        return 
$pages;
    }
    
/*
function to display the pagination
*/
    
function displayPaging() 
    {
        
$self    =    $_SERVER['PHP_SELF'];
        if(
$this->openPage<=0) {
            
$next    =    2;
        }

        else {
            
$next    =    $this->openPage+1;
        }
        
$prev    =    $this->openPage-1;
        
$last    =    $this->pages;

        if(
$this->openPage 1) {
            echo 
"<a href=$self?page=1>First</a>&nbsp&nbsp;";
            echo 
"<a href=$self?page=$prev>Prev</a>&nbsp&nbsp;";
        }
        else {
            echo 
"First&nbsp&nbsp;";
            echo 
"Prev&nbsp&nbsp;";
        }
        for(
$i=1;$i<=$this->pages;$i++) {
            if(
$i == $this->openPage
                echo 
"$i&nbsp&nbsp;";
            else
                echo 
"<a href=$self?page=$i>$i</a>&nbsp&nbsp;";
        }
        if(
$this->openPage $this->pages) {
            echo 
"<a href=$self?page=$next>Next</a>&nbsp&nbsp;";
            echo 
"<a href=$self?page=$last>Last</a>&nbsp&nbsp;";
        }
        else {
            echo 
"Next&nbsp&nbsp;";
            echo 
"Last&nbsp&nbsp;";
        }    
    }
$obj = new pagination();
$obj->connect();

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

$pages = new Paginator;   
$pages->items_total $num_rows[0];   
$pages->mid_range 9;   
$pages->paginate();   
echo 
$pages->display_pages(); 

منبع:[ جهت مشاهده لينك عضو شويد ! ]

موفق باشیدلبخند

سلام آقا من نتونستم از این کلاس استفاده کنم !

میشه کمی بیشتر توضیح بدید ( این همون چیزی هست که من عرض کردم )

فقط اگه میشه طرز اسفاده رو کمی بیشتر توضیح بدین و اینکه کجای کلاس کوئری میخوره که اطلاعات جدول رو بگیره بعد صفحه بندی کنه ؟؟
سلام
مثالی پیوست کردم.
موفق باشید
مرجع آدرس ها