• 26th September 2009 - By i-keng

    วิธีการแบ่งหน้าด้วย PHP ให้ออกมาในรูปแบบดังนี้

    [First page] << Previous | Page: … 2 3 4 5 6 … | Next >> [Last page]

    วิธีใช้งาน

    <?
    echo displayPaging( $total, $limit, $pagenumber, $baseurl );
    /*
    $total = จำนวนข้อมูลทั้งหมด
    $limit = จำนวนข้อมูลต่อ 1 หน้า
    $pagenumber = เลขหน้าปัจจุบัน
    $baseurl = Parameter ต่าง ๆ แต่ Parameter สุดท้ายต้องเป็น page=
    ตัวอย่าง displayPaging( 100, 20, 4, "?keyword=เก่ง&page=");
    */
    ?>
    

    ตัว Function อยู่ด้านในนะจ๊ะ…

    ตัว Function

    <?
    function displayPaging( $total, $limit, $pagenumber, $baseurl ){
    // how many page numbers to show in list at a time
    $showpages = "10"; // 1,3,5,7,9...
    
    // set up icons to be used
    $icon_path = 'icons/';
    $icon_param = 'align="middle" style="border:0px;" ';
    $icon_first= '[First page]';
    $icon_last= '[Lastpage]';
    $icon_previous= '<< Previous';
    $icon_next= 'Next >>';
    ///////////////////
    ///////////////////
    
    // do calculations
    $pages = ceil($total / $limit);
    $offset = ($pagenumber * $limit) - $limit;
    $end = $offset + $limit;
    
    // prepare paging links
    $html .= '<div id="pageLinks">';
    // if first link is needed
    if($pagenumber > 1) { $previous = $pagenumber -1;
    $html .= '<a href="'.$baseurl.'1">'.$icon_first.'</a> ';
    }
    // if previous link is needed
    if($pagenumber > 2) { $previous = $pagenumber -1;
    $html .= '<a href="'.$baseurl.''.$previous.'">'.$icon_previous.'</a> ';
    }
    // print page numbers
    if ($pages>=2) { $p=1;
    $html .= "| Page: ";
    $pages_before = $pagenumber - 1;
    $pages_after = $pages - $pagenumber;
    $show_before = floor($showpages / 2);
    $show_after = floor($showpages / 2);
    if ($pages_before < $show_before){
    $dif = $show_before - $pages_before;
    $show_after = $show_after + $dif;
    }
    if ($pages_after < $show_after){
    $dif = $show_after - $pages_after;
    $show_before = $show_before + $dif;
    }
    $minpage = $pagenumber - ($show_before+1);
    $maxpage = $pagenumber + ($show_after+1);
    
    if ($pagenumber > ($show_before+1) && $showpages > 0) {
    $html .= " ... ";
    }
    while ($p <= $pages) {
    if ($p > $minpage && $p < $maxpage) {
    if ($pagenumber == $p) {
    $html .= " <b>".$p."</b>";
    } else {
    $html .= ' <a href="'.$baseurl.$p.'">'.$p.'</a>';
    }
    }
    $p++;
    }
    if ($maxpage-1 < $pages && $showpages > 0) {
    $html .= " ... ";
    }
    }
    // if next link is needed
    if($end < $total) { $next = $pagenumber +1;
    if ($next != ($p-1)) {
    $html .= ' | <a href="'.$baseurl.$next.'">'.$icon_next.'</a>';
    } else {$html .= ' | ';}
    }
    // if last link is needed
    if($end < $total) { $last = $p -1;
    $html .= ' <a href="'.$baseurl.$last.'">'.$icon_last.'</a>';
    }
    $html .= '</div>';
    // return paging links
    return $html;
    }
    ?>
    
  • Leave a Reply


PHVsPjxsaT48c3Ryb25nPndvb19hZF9mb290ZXI8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2Zvb3Rlcl9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfZm9vdGVyX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfZm9vdGVyX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FsdF9zdHlsZXNoZWV0PC9zdHJvbmc+IC0gZGVmYXVsdC5jc3M8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19jYXRfY29sb3JfMTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9jb2xvcl8xMTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9jb2xvcl8xMjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9jb2xvcl8xODwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9jb2xvcl82NTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9uYXZfMTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19jYXRfbmF2XzExPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9uYXZfMTI8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fY2F0X25hdl8xODwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19jYXRfbmF2XzY1PC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2N1c3RvbV9jc3M8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fZmF2aWNvbjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlZWRidXJuZXJfdXJsPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2xvZ288L3N0cm9uZz4gLSBodHRwOi8vd3d3Lmkta2VuZy5jb20vd3AtY29udGVudC91cGxvYWRzLzEtbG9nby5wbmc8L2xpPjxsaT48c3Ryb25nPndvb19tYW51YWw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vc3VwcG9ydC90aGVtZS1kb2N1bWVudGF0aW9uL3dvb3RoZW1lLzwvbGk+PGxpPjxzdHJvbmc+d29vX3Bvc3Rfc2l6ZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fcmVzaXplPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3J0bmFtZTwvc3Ryb25nPiAtIHdvbzwvbGk+PGxpPjxzdHJvbmc+d29vX3NpZGViYXJfYWRfaHJlZl8xPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fc2lkZWJhcl9hZF9ocmVmXzI8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19zaWRlYmFyX2FkX2hyZWZfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX3NpZGViYXJfYWRfaHJlZl80PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fc2lkZWJhcl9hZF9pbWdfMTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtMS5naWY8L2xpPjxsaT48c3Ryb25nPndvb19zaWRlYmFyX2FkX2ltZ18yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS0yLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX3NpZGViYXJfYWRfaW1nXzM8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTMuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fc2lkZWJhcl9hZF9pbWdfNDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19zaW5nbGVfdGh1bWI8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIG15d2VibG9nPC9saT48bGk+PHN0cm9uZz53b29fdXBsb2Fkczwvc3Ryb25nPiAtIGh0dHA6Ly93d3cuaS1rZW5nLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMS1sb2dvLnBuZzwvbGk+PC91bD4=