ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11761  
Старый 09.08.2009, 15:47
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 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..
 
Ответить с цитированием

  #11762  
Старый 09.08.2009, 16:04
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме:
2735257

Репутация: 103
По умолчанию

Цитата:
Сообщение от FireFenix  
Использовать в SQL запросе LIMIT

Код:
SELECT * FROM table LIMIT 10,100
LIMIT 10, 100 - выбрать 100 записей, начиная с 10 записи
Уже есть
PHP код:
  $sql "SELECT * FROM `".$this->table."`".$this->where.$this->order_by.
            
" LIMIT ".$begin.", ".$this->lines
Проблема не в выводе записей с ними все отлично, проблема как сделать в навигации чтобы по когда переходишь по страницам они увеличивались...
сейчас по страницам как не ходи будет
[1][2][3]...[8][9][10]
а надо чтобы когда например на страницу [3] жмешь стало
[3][4][5]...[8][9][10]
 
Ответить с цитированием

  #11763  
Старый 09.08.2009, 16:26
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме:
2735257

Репутация: 103
По умолчанию

Да Ё
Проблема не в выводе записей с ними все отлично, проблема как сделать в навигации чтобы по когда переходишь по страницам они увеличивались...
сейчас по страницам как не ходи будет
[1][2][3]...[8][9][10]
а надо чтобы когда например на страницу [3] жмешь стало
[3][4][5]...[8][9][10]

Еще раз! Мне нужно сделать не вывод он уже есть!
Мне нужна сделать так чтобы навигация выводилась как я написал в скрипте это функция public function link_page()...
Я не могу придумать как так сделать!
Можно сказать что вся суть в этом цикле
PHP код:
 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>";
                }
            } 
У меня было несколько попыток что-то сделать, но почему-то не получается у меня это придумать!
Вот одна из попыток
PHP код:
for ($i $this->page$i $this->page+3$i++) {
                if(
$i == $this->page) {
                    
$return .= "[".($i 1)."]";
                } else {
                    
$return .= "<a href='".$this->prefix_p."=".($i 1)."'>[".($i 1)."]</a>";
                }
            } 
Делает бесконечное число страниц =(
Хоть и отражает частично суть как я хочу!

Последний раз редактировалось KaMiKadZe; 09.08.2009 в 16:33..
 
Ответить с цитированием

  #11764  
Старый 10.08.2009, 03:41
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме:
2735257

Репутация: 103
По умолчанию

FireFenix,
спасибо, но моим нужды это не удовлетворились
Пришлось скурить трубку мира и создать то что сам не понимаю, но зато работает как я хотел
Вот пример того как кодить лучше не надо
PHP код:
    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); // общее число страниц
        
$return .= "<div class='navigation'>";
        if(
$this->page != 0) {
            
$return .= "<a href='".$this->prefix_p."=".($this->page)."'><</a>";
        } else {
            
$return .= "<span><</span>";
        }
        
$return .= "&nbsp;";
        if(
$this->page != 1) {
            
$return .= "<a href='".$this->prefix_p."=1'>1</a>";
        } else {
            
$return .= "<span>1</span>";
        }

        
$return .= "&nbsp";
        if(
$this->page == $str && $this->page != && $str 2) {
            
$return .= "<a href='".$this->prefix_p."=".($this->page 2)."'>".($this->page -
                
2)."</a>";
            
$return .= "<a href='".$this->prefix_p."=".($this->page 1)."'>".($this->page -
                
1)."</a>";
        }

        if(
$this->page 1) {
            if(
$str && $this->page >= 4) {
                if(
$str >= && ($this->page == $str or $this->page == $str 2)) {
                    if(
$this->page == $str && $str != 5) {
                    } else {
                        
$return .= "<a href='".$this->prefix_p."=".($this->page 2)."'>".($this->page -
                            
2)."</a>";
                    }

                    if(
$this->page == && $str == 6) {
                    } else {
                        
$return .= "<a href='".$this->prefix_p."=".($this->page 1)."'>".($this->page -
                            
1)."</a>";
                    }
                }
            }
            if((
$str && $str && $this->page == $str 2) or ($str == && $this->
                
page == $str 1)) {
                
$return .= "<a href='".$this->prefix_p."=".($this->page 1)."'>".($this->page -
                    
1)."</a>";
            }
            
$return .= "<a href='".$this->prefix_p."=".($this->page)."'>".($this->page).
                
"</a>";
        }

        if(
$this->page != && $this->page && $str != 2) {
            
$return .= "<span>".($this->page 1)."</span>";
        }
        if(
$this->page && $this->page <= $str) {
            
$return .= "<span>".($this->page 1)."</span>";
        }

        if(
$this->page $str) {
            if(
$this->page == 1) {
                
$return .= "<a href='".$this->prefix_p."=".($this->page 2)."'>".($this->page +
                    
2)."</a>";
                if(
$str 3) {
                    
$return .= "<a href='".$this->prefix_p."=".($this->page 3)."'>".($this->page +
                        
3)."</a>";
                }
                if(
$this->page >= $str) {
                } else {
                    if(
$str != 4) {
                        
$return .= "<a href='".$this->prefix_p."=".($this->page 4)."'>".($this->page +
                            
4)."</a>";
                    }
                }

            } else {
                if(
$this->page == 2) {
                    
$return .= "<a href='".$this->prefix_p."=".($this->page 2)."'>".($this->page +
                        
2)."</a>";
                    if(
$str != 4) {
                        
$return .= "<a href='".$this->prefix_p."=".($this->page 3)."'>".($this->page +
                            
3)."</a>";
                    }
                } else {
                    
$return .= "<a href='".$this->prefix_p."=".($this->page 2)."'>".($this->page +
                        
2)."</a>";
                }
            }

        }

        
$return .= "&nbsp";

        if(
$this->page != $str) {
            
$return .= "<a href='".$this->prefix_p."=".$str."'>".$str."</a>";
            
$return .= "&nbsp";
            
$return .= "<a href='".$this->prefix_p."=".($this->page 2)."'>></a>";

        } else {
            if(
$str 1) {
                
$return .= "<span>".$str."</span>";
            }
            
$return .= "<span>></span>";
        }
        
$return .= "</div>";

        return 
$return;

    } 
До сих пор удивляюсь как все работает
 
Ответить с цитированием

  #11765  
Старый 10.08.2009, 04:01
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Я просто в шоке кажеться.
Я так понимаю ТС нужна была работающая постраничная навигация? И ради этого он накодил это гнечто? ОМГ.
 
Ответить с цитированием

  #11766  
Старый 10.08.2009, 07:22
Аватар для Вася Рогов
Вася Рогов
Новичок
Регистрация: 06.07.2009
Сообщений: 18
Провел на форуме:
42940

Репутация: 0
Отправить сообщение для Вася Рогов с помощью ICQ
По умолчанию

m0Hze, дада, но ТС это топик стартёр, а тот тип просто садомаза))
 
Ответить с цитированием

  #11767  
Старый 10.08.2009, 13:28
Аватар для KokauH
KokauH
Познающий
Регистрация: 30.01.2009
Сообщений: 81
Провел на форуме:
459860

Репутация: 46
По умолчанию

Можно ли написать скрипт редиректа с перехватом рефера? Если рефер передаётся, то редирект происходит, а если рефер не передаётся, то редиректа не происходит просто отображается белый экран?
 
Ответить с цитированием

  #11768  
Старый 10.08.2009, 13:29
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Реферер легко потделать, поетому никогда не расчитывайте на него.
 
Ответить с цитированием

  #11769  
Старый 10.08.2009, 13:52
Аватар для KokauH
KokauH
Познающий
Регистрация: 30.01.2009
Сообщений: 81
Провел на форуме:
459860

Репутация: 46
По умолчанию

Ну а всё же? Если да, то как будет выглядеть?
В php вообще не силён
 
Ответить с цитированием

  #11770  
Старый 10.08.2009, 14:00
Аватар для PaCo
PaCo
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме:
1754802

Репутация: 380
По умолчанию

Цитата:
Сообщение от KokauH  
Ну а всё же? Если да, то как будет выглядеть?
В php вообще не силён
В simple TDS это уже есть если про это, а еcли нет то -
PHP код:
if(!empty($_SERVER['HTTP_REFERER'])) 
{
   
header("Location: http://www.example.com/"); 
}
die; 
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



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


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




ANTICHAT.XYZ