Странициране на 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 за да виждате всичко нормално.




