Вы не зашли.
    
        
        
                        
                        #1.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.12 20:08
                                                
                                                        
 
                Собственно написал класс постраничной навигации!
Гляньте на факт гомнокода и что и как лучше сделать!
Код:
| span style="color: #0000BB"><?phpclass Navigation {    private $_iEnd;    private $_iLast;    private $_iOne;    private $_iTwo;    public function __construct($total, $page, $output, $url) {        $this -> total  = $total;   // колличество эллементов        $this -> page   = $page;    // текщая страница        $this -> output = $output;  // кол-во выводимых эллементов на страницу        $this -> url    = $url;     // текущая страница        $this -> _iEnd  = floor(($this->total - 1) / $this->output) * $this->output; // узнаем последнюю страницу    }    public function setStart() { /// метод указывающий с какой записи выводить эллементы        if (!is_numeric($this->page) and $this->page == 'end') {          $this -> page = $this -> _iEnd;      }              if ($this->page > $this->total) {            return $this -> page = 0;        } else {            return $this -> page;        }  }  public function setEnd() { /// метод указывающий по какую запись выводить эллементы        if ($this->total < ($this->page + $this->output)) {            return $this -> total;        } else {            return $this -> output;        }  }      public function move() { /// вывод "кнопок" далее, назад          if ($this->total > $this->output) {            $gather = null;                if (trim($this -> page)) {                $gather .= '<a href="'.$this -> url.'/page:'.($this -> page - $this -> output).'"><span><Назад</span></a> ';            } else {                $gather .= '<span><Назад</span> ';            }                $gather .= '|';                if ($this->total > ($this->page + $this->output)){                $gather .= ' <a href="'.$this -> url.'/page:'.($this -> page + $this->output).'"> <span>Далее></span></a>';            } else {                 $gather .= ' <span>Далее></span>';            }                return $gather;            } else {            return null;        }    }      public function list_pages($move = true) {         $gather = null;        if (trim($move)) {            if (trim($this -> page)) {                $gather .= '<a href="'.$this -> url.'/page:'.($this -> page - $this -> output).'"><span><</span></a> ';            } else {                $gather .= '<span><</span> ';            }    }        $this -> _iLast = ceil($this->total / $this->output);        $this -> _iOne  = $this -> page - ($this->output * 2);        $this -> _iTwo  = $this -> page + ($this->output * 2);            if (empty($move)) {            $gather .= 'Страницы: ';        }            if ($this -> _iOne < $this->total and $this -> _iOne > 0) {            $gather .= ' <a href="'.$this -> url.'"><span>1</span></a> <span>...</span>';        }        for ($i = $this->_iOne; $i < $this->_iTwo;) {            if ($i < $this->total and $i >= 0) {             $ii = floor(1 + $i / $this->output);                  if ($this->page == $i) {                 $gather .= ' <span><b>'.$ii.'</b></span>';            } else {                 $gather .= ' <a href="'.$this -> url.'/page:'.$i.'"><span>'.$ii.'</span></a>';            }        }        $i = $i + $this->output;         }            if ($this->_iTwo < $this->total) {             $gather .= ' <span>...</span> <a href="'.$this -> url.'/page:'.$this -> _iEnd.'"><span>'.$this -> _iLast.'</span></a>';        }        if (trim($move)) {        if ($this->total > ($this->page + $this->output)){            $gather .= ' <a href="'.$this -> url.'/page:'.($this -> page + $this->output).'"> <span>></span></a>';        } else {             $gather .= ' <span>></span>';        }    }            return $gather;        }}?> | 
Ну можно еще расписать почему так или иначе лучше :-)
        
                            
                Отредактировано Nu3oN (2010.08.12 21:09)
            
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                        
                        #2.
            Morgan
                                                Off
                
                                                    (10)
                                                            
                        Участник
                        2010.08.12 20:08
                                                
                                                        
 
                расписывай
        
        
                            
                Натан ротшильд :
Кто владеет информацией, тот владеет миром
            
        
     
        
        
                $this -> url, наверное через htmlspecialchars пропустить надо бы.
Добавлено спустя   1 минуту  29 секунд: Morgan написал:
расписывай
имеется виду, нам написать как можно лучше
        
        
                
    
 
        
        
                        
                        #4.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.12 20:08
                                                
                                                        
 
                Gemorroj написал:$this -> url, наверное через htmlspecialchars пропустить надо бы.
Добавлено спустя   1 минуту  29 секунд: Morgan написал:
расписывай
имеется виду, нам написать как можно лучше
 пропустил! в шапке сайта!
у меня привычка фильтровать часто используемые переменные в конфигурационном файле, таких как id, page, act и т.д
        
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                        
                        #5.
            Morgan
                                                Off
                
                                                    (10)
                                                            
                        Участник
                        2010.08.12 20:08
                                                
                                                        
 
                Nu3oNгде же комментарии?
        
        
                            
                Натан ротшильд :
Кто владеет информацией, тот владеет миром
            
        
     
        
        
                Nu3oN написал:
у меня привычка фильтровать часто используемые переменные в конфигурационном файле
плохая привычка. кто знает, вдруг тебе потребуется неотфильрованная переменная? для передачи текстом в email, например?
        
        
                
    
 
        
        
                        
                        #7.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.12 20:08
                                                
                                                        
 
                Gemorroj написал:Nu3oN написал:
у меня привычка фильтровать часто используемые переменные в конфигурационном файле
плохая привычка. кто знает, вдруг тебе потребуется неотфильрованная переменная? для передачи текстом в email, например?
 ну можно ж тогда сделать так...
вот у меня в шапке отфильтрованная переменная id
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
а вот например в файле index.php мне она необходима не отфильтрованная
$id = $_GET['id'];
Добавлено спустя   7 минут  59 секунд: Morgan написал:
Nu3oN
где же комментарии?
прокомментировал! этого достаточно?
или тебе построчно прокомментировать?
        
                            
                Отредактировано Nu3oN (2010.08.12 20:08)
            
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                        
                        #8.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.12 20:08
                                                
                                                        
 
                Поправил мелех класс... нашел баг...
        
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                Nu3oN, ну как сказать, не всегда есть возможность обратиться к $_GET. Точнее, не всегда это обращение будет хорошим вариантом. Возьмем твой класс пагинации. По хорошему, он дожен быть отвлечен от верстки, либо она должна быть вынесена в свойство и меняться пользователем. Т.е. ты можешь и не знать в каком элементе $_GET нужные нам данные, они передаются как параметр в методы класса. И там они должны быть не отфильтрованы. т.к. класс не в крусе что у тебя там в конфиге. Есть просто такое правило, что данные в программе должны летать в их первозданном виде, чтобы не повредить их по невнимательности, и только при выводе в браузер должны фильтроваться.
Если не придерживаться таких правил, то никаких PEAR мы бы не видели и каждый бы писал - кто в лес, кто по дрова.
        
        
                
    
 
        
        
                        
                        #10.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.12 20:08
                                                
                                                        
 
                Gemorroj написал:
Есть просто такое правило, что данные в программе должны летать в их первозданном виде, чтобы не повредить их по невнимательности, и только при выводе в браузер должны фильтроваться.
т.е ты хочешь сказать, если я записываю сообщение(например) в базу, то я это сообщение должен отправить в том виде в котором я его получил? и фильтровать торько при выводе?
        
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                Nu3oN написал:Gemorroj написал:
Есть просто такое правило, что данные в программе должны летать в их первозданном виде, чтобы не повредить их по невнимательности, и только при выводе в браузер должны фильтроваться.
т.е ты хочешь сказать, если я записываю сообщение(например) в базу, то я это сообщение должен отправить в том виде в котором я его получил? и фильтровать торько при выводе?
 Именно, кроме того, htmlspecialchars переводит один html символ в грубо говоря 4-5. Это довольно увеличивает вес бд, но выигрывает в оптимизации.
        
        
                
    
 
        
        
                        
                        #12.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.13 00:12
                                                
                                                        
 
                а теперь представим часто используемый случай, когда мы в цикле выводим данные из базы! стандартное колличество выводимых данных ~10, теперь представим что функция экранирования спец символов берет на себя 0.0005сек, теперь посчитаем сколько в получится в итоге! а получится у нас 0.0050! плюс на странице еще выводятся какие либо данные! это еще ~50 добавляем итого у нас уже 0.0100 не плохо да? и какая тут может идти речь о оптимизации? действительно надо слушать советы которые тебе дают, но нужно иметь свою голову на плечах! надо думать что ты делаешь, и в каких случаях что и как лучше применить! в данном случае я вижу только минусы!
        
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                Nu3oN, собери данные, которые нужно отфильтровать в 1 строку и отфильтруй ее 1 раз. Ничерта ты не выиграешь от того, что запишешь форматированный html в базу. Проблемы, создаваемые этим много серьезнее этой микрооптимизации. Я тебе всегда могу и так показать места, где можно в 10 лучше и быстрее сделать и без htmlspecialchars'а.
        
        
                
    
 
        
        
                        
                        #14.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.13 07:07
                                                
                                                        
 
                Мы отдалились от темы! по классу есть что сказать?
        
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                Pirateвесьма спорное удтверждение.
пять символов переводится:
>, <, ', & [,"];
БД выдержит
        
        
                            
                Натан ротшильд :
Кто владеет информацией, тот владеет миром
            
        
     
        
        
                Morgan написал:
Pirate
весьма спорное удтверждение.
пять символов переводится:
>, <, ', & [,"];
БД выдержит
А если у тебя 100 000 постов на форуме, 50% из них со спец символами (а на вм форумах около 80%), 1символ=1байт, в среднем один пост ~ 30-40 символов/байт, итого выйдет около 3.34 Mb без переобразования, с переобразованием около 4.53 Mb при 5 символах.
        
                            
                Отредактировано Pirate (2010.08.13 10:10)
            
        
                
     
        
        
                Не будем холиварить.
Каждый делает так как ему удобно 
        
        
                            
                Натан ротшильд :
Кто владеет информацией, тот владеет миром
            
        
     
        
        
                да размер бд, это вообще последнее на что нужно смотреть
        
        
                
    
 
        
        
                        
                        #19.
            Pirate1
                        
                        Гость
                        2010.08.13 21:09
                                                                                            
                                            
                                                        
 
                я так и делаю 
        
        
                
     
        
        
                        
                        #20.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2010.08.13 21:09
                                                
                                                        
 
                Как бы возьму этот факт во внимание, но пока что как нибудь по старинке! по крайне мере пока не доставляет "неудобств", а потом переписать это дело не долго!
        
                            
                Отредактировано Nu3oN (2010.08.13 22:10)
            
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                это сейчас не долго, а если проект развивать будешь, кода много напишешь, то потом и переписывать много придется. ббкоды планируешь делать? или ссылки автоматом подставлять? вот и подумай, как ты будешь это все редактировать, если в бд будет уже готовый html.
        
        
                
    
 
        
        
                Gemorroj написал:
это сейчас не долго, а если проект развивать будешь, кода много напишешь, то потом и переписывать много придется. ббкоды планируешь делать? или ссылки автоматом подставлять? вот и подумай, как ты будешь это все редактировать, если в бд будет уже готовый html.
Ну а функцию обратного перевода уже отменили?
        
        
                
    
 
        
        
                да, напиши мне такую на все случаи ббкода?)
        
        
                
    
 
        
        
                Gemorroj написал:
да, напиши мне такую на все случаи ббкода?)
У меня в форуме увидишь, функция HTML2BBcode