ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 09.08.2009, 15:47
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
С нами: 10635912

Репутация: 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..
 
Ответить с цитированием
 



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.