
09.08.2009, 15:47
|
|
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме: 2735257
Репутация:
103
|
|
PHP код:
<?php
class Pages
{
private $table; // таблица из которой выводить
private $page; // страница на которой мы сейчас
private $lines; // сколько выводить записей
private $where; // условие вывода из базы
private $order_by; // группировка вывода из базы
public $prefix_p; // префикс страницы
public function select_page($table, $page, $lines, $where, $order_by)
{
if(trim($where)) {
$this->where = " WHERE ".$where;
} else {
$this->where = "";
}
if(trim($order_by)) {
$this->order_by = " ORDER BY ".$order_by;
} else {
$this->order_by = "";
}
$this->page = $page - 1; // чтобы страницы выводились с 0, а считались с 1
$this->lines = $lines;
$this->table = $table;
$begin = $this->page * $this->lines;
$sql = "SELECT * FROM `".$this->table."`".$this->where.$this->order_by.
" LIMIT ".$begin.", ".$this->lines;
$result = mysql_query($sql);
$return = array();
while ($obj = mysql_fetch_object($result))
array_push($return, $obj);
return $return;
}
public function link_page()
{
$sql = "SELECT COUNT(*) FROM `".$this->table."`".$this->where.$this->order_by;
$value = mysql_query($sql);
$value = mysql_fetch_row($value);
$alllines = $value[0];
$str = ceil($alllines / $this->lines); // общее число страниц
if($str <= 6) {
for ($i = 0; $i < $str; $i++) {
if($i == $this->page) {
$return .= "[".($i + 1)."]";
} else {
$return .= "<a href='".$this->prefix_p."=".($i + 1)."'>[".($i + 1)."]</a>";
}
}
return $return;
} else {
$str = $str - 3;
for ($i = 0; $i < 3; $i++) {
if($i == $this->page) {
$return .= "[".($i + 1)."]";
} else {
$return .= "<a href='".$this->prefix_p."=".($i + 1)."'>[".($i + 1)."]</a>";
}
}
$return .= "...";
for ($a = 0; $a < 3; $a++) {
if($str == $this->page) {
$return .= "[".($str + 1)."]";
} else {
$return .= "<a href='".$this->prefix_p."=".($str + 1)."'>[".($str + 1)."]</a>";
}
$str++;
}
return $return;
}
}
}
?>
Выводиться [1][2][3]...[8][9][10], как сделать чтобы при переходе на 2, 3 и т.д страницы выводились [2][3][4]...[8][9][10], [3][4][5]...[8][9][10] и т.д
Работает так
PHP код:
class->select_page($table,$p,3,$where,$order_by);
$p это страница на который мы сейчас exapmle.php?p=1 или exapmle.php?p=3...
3 - сколько записей на страницу
Последний раз редактировалось KaMiKadZe; 09.08.2009 в 15:50..
|
|
|