Webmaster общности: Predpriemach.com | SearchEngines.bg

    Странициране на MySQL данни чрез php 5 и jQuery

    Автор: devent

    Информация за урока: Чрез този урок, Вие бързо и безболезнено можете да създадете странициране(подреждане по страници) на всеки един Ваш код. Ето и няколко предимства на този урок:

    • Лесна употреба
    • Динамично презареждане(без рефреш)
    • Красив ефект на презареждане
    • Модерен код(php 5 + oop, jQuery, ajax)

    ДЕМО -> под кодовете
    Архив с кодовете -> свали
    Архивът съдържа:

    • class_pagination.php – класът със страницирането.
    • conf.php – конфигурационен файл.
    • example.sql – SQL файл с примерни данни за провеждане на тестове.
    • getRows.php – Файлът, от който идват данните(извеждане от MySQL и проверки)
    • jQuery.js – jQuery библиотеката + функциите за динамично и ефектно извеждане на резултати
    • style.css – стиловете на div „pagination“, показващ се под резултатите

    Кодове

    pagination_class.php

    <?php
    /* class pagination
    author -> devent
    date -> 02/11/09 */
    class pagination {
    private $d,$q,$page,$totalrows,$pagination;
    public $p;
    
    function __construct($rpp,$sql) {
    $this->rpp = $rpp; $this->sql = $sql;
    }
    
    private function getTotalRows() {
    $this->d = mysql_fetch_assoc(mysql_query($this->sql));
    $this->totalrows = $this->d['allz'];
    return $this->d['allz'];
    }
    
    public function page($page) {
    $this->page = (!isset($page) || $page < 0) ? $this->page = 1 : $this->page = $page;
    }
    
    private function lastPage() {
    return ceil($this->getTotalRows() / $this->rpp);
    }
    
    public function limit() {
    return ($this->page - 1) * $this->rpp;
    }
    
    public function showPages() {
    if($this->lastPage() != "1") {
    $this->pagination = '<div id="pagination">';
    $this->d = ceil($this->getTotalRows() / $this->rpp);
    $prev = ($this->page <= 1) ? '<div class="disabled button">Предишна</div>' : '<div class="enabled button"><a href="javascript:pagination('.($this->page - 1).')">Предишна</a></div>';
    $next = ($this->page >= $this->lastPage()) ? '<div class="disabled button">Следваща</div>' : '<div class="enabled button"><a href="javascript:pagination('.($this->page + 1).')">Следваща</a></div>';
    $this->pagination .= $prev;
    if($this->lastPage() > 7) {
    if($this->page > 3) { $this->pagination .= '<a class="button" href="javascript:pagination(1)">1</a> ...'; }
    if($this->page <= 3) {
    for($x = 1;$x<=4;$x++) { $this->pagination .= '<a class="button" href="javascript:pagination('.$x.')">'.$x.'</a>'; }
    $this->pagination .= '<div class="marg">...</div><a class="button" href="javascript:pagination('.$this->lastPage().')">'.$this->lastPage().'</a>';
    } else {
    if($this->page >= ($this->lastPage() - 4)) {
    for($x = ($this->lastPage() - 3);$x<=($this->lastPage() - 1);$x++) { $this->pagination .= '<a class="button" href="javascript:pagination('.$x.')">'.$x.'</a>'; }
    $this->pagination .= '<a class="button" href="javascript:pagination('.$this->lastPage().')">'.$this->lastPage().'</a>';
    }
    else {
    for($x = $this->page;$x<=($this->page + 4);$x++) { $this->pagination .= '<a class="button" href="javascript:pagination('.($x - 1).')">'.($x - 1).'</a>'; }
    $this->pagination .= '<div class="marg">...</div><a class="button" href="javascript:pagination('.$this->lastPage().')">'.$this->lastPage().'</a>';
    }
    }
    } else {
    for($x = 1;$x<=$this->lastPage();$x++) { $this->pagination .= '<a class="button" href="javascript:pagination('.$x.')">'.$x.'</a>'; }
    }
    $this->pagination .= $next.'</div>';
    return $this->pagination;
    }
    }
    }
    ?>

    conf.php

    <?php
    define("dbhost", "localhost");
    define("dbuser", "root");
    define("dbpass", "password");
    define("dbtable", "dev");
    $c = mysql_connect(dbhost,dbuser,dbpass) or die("Не мога да се свържа с базата данни!");
    $conn = mysql_select_db(dbtable,$c) or die("Не мога да избера таблица!");
    ?>

    getRows.php

    <table border="1">
    <tr><td>ID</td><td>Име</td><td>Емайл</td><td>Телефон</td><td>Град</td></tr>
    <?php
    header('Content-Type: text/html; charset=utf-8');
    include("conf.php");
    include("class_pagination.php");
    $rpp = 10;
    $sql = "SELECT count(id) as `allz` FROM test";
    $pagination = new pagination($rpp,$sql);
    $pagination->page($_GET['page']);
    $query = mysql_query("SELECT * from test LIMIT ".$pagination->limit().",".$pagination->rpp."");
    while($d = mysql_fetch_assoc($query)) {
    echo '<tr><td>'.$d['id'].'</td><td>'.$d['name'].'</td><td>'.$d['email'].'</td><td>'.$d['phone'].'</td><td>'.$d['city'].'</td></tr>';
    }
    ?>
    </table>
    <?php echo $pagination->showPages(); ?>

    jQuery.js

    $(document).ready(function(){
    $.get("getRows.php", { page: 1},
    function(data){
    $("#content").html(data);
    });
    });
    function pagination(page) {
    $.get("getRows.php", { page: page},
    function(data){
    $("#content").slideUp("slow",function() {
    $(this).html(data);
    $(this).slideDown("slow");
    });
    });
    }

    style.css

    #pagination { margin-top: 25px; text-align: center; }
    #pagination .button { margin-left: 2px; border: 1px solid #808080; padding: 3px; }
    #pagination .disabled { display: inline; color: #5F5F5F; }
    #pagination .enabled { display: inline; }
    #pagination a { color: #000; }
    #pagination a:hover { color: #b90000; }
    #pagination .marg { display: inline; margin-left: 2px; }

    Ето и един примерен index.html/php ->

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Template</title>
    <style type="text/css">
    @import url(style.css);
    </style>
    <script type="text/javascript" src="jQuery.js"></script>
    <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
    </head>
    
    <body>
    <div id="wrapper">
    <div id="content">
    
    </div>
    </div>
    </body>
    </html>

    Внимание :: Задължително трябва да имате jQuery библиотека към сайта, иначе скрипта няма да проработи!!

    Автор: devent / Всички права запазени. Категорично забранявам преписването по други сайтове или продажбата на този скрипт!!!

    Урокът е тестван и работи на 100%. Извинявам се за обясненията във видеото, но не ме бива много по разясняването :). И за тихичкият микрофон също (oops)

    Пуснете видеото на full screen за да виждате всичко нормално.

    Оставете коментар